Notice: Trying to get property of non-object in /home/gustav/websites/webmasterdebat.dk/components/com_ccboard/helpers/helper.php on line 36 Notice: Trying to get property of non-object in /home/gustav/websites/webmasterdebat.dk/components/com_ccboard/helpers/helper.php on line 37 Notice: Trying to get property of non-object in /home/gustav/websites/webmasterdebat.dk/components/com_ccboard/helpers/helper.php on line 38 Notice: Trying to get property of non-object in /home/gustav/websites/webmasterdebat.dk/components/com_ccboard/helpers/helper.php on line 39 Notice: Trying to get property of non-object in /home/gustav/websites/webmasterdebat.dk/components/com_ccboard/helpers/helper.php on line 40 Notice: Trying to get property of non-object in /home/gustav/websites/webmasterdebat.dk/components/com_ccboard/helpers/helper.php on line 41 Notice: Trying to get property of non-object in /home/gustav/websites/webmasterdebat.dk/components/com_ccboard/helpers/helper.php on line 59 Notice: Trying to get property of non-object in /home/gustav/websites/webmasterdebat.dk/components/com_ccboard/helpers/helper.php on line 66
 WebmasterDebat - Stedet hvor webmastere mødes :: PHP
Velkommen Gæst   
 Emne :MVC-guide?.. 18-01-2010 09:43:39 
Randi H.
Indmeldt: 11-01-2010 12:43:47
Indlæg: 15
Område: Dark side of Fyn
 

Hejsa.

Er der nogen der kender en god guide til MVC (Model-Controller-View) konceptet?

Synes jeg har nogenlunde forståelse for pointen i det, men er ikke helt sikker på jeg kan implementere det rigtigt, hvis jeg selv skal til at lave noget. Savner en god simpel guide.

IP gemt
http://www.silwing.dk

Beware... I will always follow you in your shadow
 Emne :Re:MVC-guide?.. 27-02-2010 16:25:40 
Indmeldt: 18-05-2012 19:15:33
Indlæg: 0
Område

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.

NoteBook Design Class Diagram. Klik for link til billede

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.

IP gemt
Sidst ændret: 27-02-2010 16:27:11 af på grund af
 Emne :Re:MVC-guide?.. 01-03-2010 03:15:51 
Randi H.
Indmeldt: 11-01-2010 12:43:47
Indlæg: 15
Område: Dark side of Fyn
 
Tusind tak for svaret :) Føler i hvert fald jeg har fået besvaret rigtig mange spørgsmål omkring MVC og grundprincipperne bag! Smart det der med exceptions.. Skal igang med et middelstort projekt, så glæder mig til at se hvordan jeg kan få det organiseret og hvordan MVC-modellen kan hjælpe med den opgave :)
IP gemt
http://www.silwing.dk

Beware... I will always follow you in your shadow
 Emne :Re:MVC-guide?.. 02-03-2010 09:23:22 
Indmeldt: 18-05-2012 19:15:33
Indlæg: 0
Område
Glad for at jeg kunne hjælpe :-)
IP gemt
Side # 


Powered by ccBoard