M'et i din MVC står for model, det vil sige at det er din klasse som eks. en Bil eller en Bruger. Et repository pattern er et pattern hvor du har dit database abstraktionslag i. Det vil sige at du fra dit repository pattern henter en liste af biler, eller en liste af brugere, gemmer, opdaterer og håndterer alt omkring adgang til databasen. Grunden til at dette er afkoblet fra din model er at det ikke er ønskeligt at din model skal kende til database og dens implementering. Du vil samtidig have en høj binding i din klasse, så metoder som load, save osv. hører ikke hjemme i en model.
Hvis du skal sammenligne med MVC, så er repository pattern nærmere en del af C'et
For at svare på dit spørgsmål: Det skulle være muligt at oprette nogle generelle klasser i PHP, som kan levere en liste af objekter. En repository klasse ser typisk således ud:
public class BilRepository
{
List<Bil> LoadAllBiler();
Bil LoadBil();
void SaveBil(Bil b);
void DeleteBil(Bil b);
}
nu ved jeg godt det ikke er PHP syntaks, men ideen er at du så kun skal lave en instans af klassen BilRepository og så have adgang til de metoder som eksempelvis dem ovenfor. Dit BilRepository tager sig så af alt kommunikationen med databasen. Man kan udvidde ovenstående repository med alle dem man vil fx. LoadAllBilerFromUser(int userid) osv. Bemærk at der i ovenstående mangler en update, det er fordi jeg typisk laver samme funktionalitet i min Save metode, således jeg kigger på dens id om det findes, hvis det gør det, så er det en opdate. Ellers er det en insert.
Indlæg senest redigeret d. 18.03.2011 09:12 af Bruger #2730