|
Jeg kender ikke lige et godt link til en guide, men selve MVC konceptet er faktisk ganske simpelt. (Skal prøve at gøre det så simpelt som muligt)
View er klasser hvis eneste opgave er at vise noget til brugeren (stort set alt der indeholder "echo $foo;", alt andet skal indeholde "return" statements)
Model er klasser som f.eks. "Bil" eller "Person". Altså ting som du kan tage og føle på som var det virkelige ting (dette kan blive meget abstrakt, f.eks. er "Prislinje" i et betalingssystem også en model klasse. Bredt sagt kan man sige alle klasser der er navneord, og som ikke passer på View-klasse beskrivelsen, er Model-klasser)
Control (eller Handler om du vil) er klasser der holder styr på kommunikationen mellem View klasserne og Model klasserne.
Et eksempel kunne være et post-it system hvor man kan skrive og søge i en masse små notitser:
Opret en note:
1. Du skriver noget i et tekstfelt og trykker på "Opret Note". Html-formen ligger i en metode i klassen "GUI" (View). 2. Når du trykker på "Opret Note" kaldes funktionen "opretNote(note)" i klassen "NoteHandler" (Controller). 3a. Hvis "note" parameteren er tom, kaster "opretNote(note)" metoden i "NoteHandler"-klassen en Exception som "GUI"-klassen skal gribe og behandle. 3b. Ellers kalder "opretNote(note)"-metoden "setTekst(tekst)"-metoden på det nyoprettede "Note"-objekt. 4. Dernæst bliver det nye "note" objekt gemt i arrayet noteListe i "NoteHandler"-klassen. 5. Det antages at opretNote(note) metoden gjorde hvad den skulle, med mindre en Exception blev kastet (try catch) så "GUI"-en fortæller brugeren at noten er gemt.
Hvis man så f.eks. skal søge i ens noter: 1. Skriv hvad du søger efter i et tekstfelt og tryk "Søg". Dette sker i "GUI" klassen (View) 2. "GUI"-klassen kalder metoden "find(tekst)" metoden i "NoteHandler" klassen 3a. Hvis parameteren "tekst" er tom kaster metoden en Exception så forløbet afbrydes 3b. Hvis parameteren ikke er tom så laver vi måske en foreach() løkke på vores liste 4. For hvert objekt i listen kalder "findNote(tekst)" metoden "getTekst" på det aktuelle objekt og tjekker om den returnerede værdi indeholder parameteren "tekst" 4a. Hvis værdien indeholder teksten: returner det aktuelle note objekt 4b. Hvis værdien ikke indeholder teksten, fortsæt løkken 5. Løkken har været alle noter igennem betyder det at ingen noter matchede teksten. Vi kaster en Exception 6a. "GUI"-klassen griber en Exception og viser meddelelsen i objektet. 6b. "GUI"-klassen modtager et Note-objekt fra "NoteHandler"-klassen og viser noten til brugeren.
Jeg har lavet et hurtigt (og sikkert mangelfulgt) Design Class Diagram der viser sammenhænge mellem de forskellige klasser.

Jeg håber dette måske hjalp dig på vej, og ikke gjorde dig mere forvirret. Skriv hvis du har nogle spørgsmål :-D
Men MVC modellen er kun et forslag til hvordan man kan opbygge sin applikation eller webside. Jeg har selv modificeret modellen lidt og tilføjet en pakke(mappe) kaldet Exceptions der indeholder alle mine egne Exception-extensions. Jeg har prøvet at bruge den når jeg skulle programmere et forum og der gav den et fornuftigt overblik, men jeg vil tro at for store projekter med flere 100 klasser, så mister man hurtigt overblikket hvis man kun holder sig til MVC grundmodellen. |