Ik ben momenteel bezig om mijn framework over te zetten naar het MVC pattern. Eerst had ik een aantal classes, die riep ik gewoon simpelweg aan in mijn controllers (waren toen geen classes). Hierbij was het alsnog vaak dat ik steeds weer hetzelfde moest tikken, daarom ben ik uit eindelijk overgestapt naar het MVC pattern, omdat je dan alles met behulp van classes doet.
De "view" is voor mij zeer duidelijk, namelijk de html die weergeven moet worden. Ook de "controller" was voor mij snel duidelijk. Zijn taak is de gewenste actie van de bezoeker uitvoeren. De twee die ik tot dusver genoemd heb zijn overal bijna hetzelfde. De enige die ik anders zie is de "model".
Voordat ik een manier van het model ga toepassen wil ik er zeker van zijn dat ik het goed aanpak. Vandaar mijn vraag:
Hoe pakken jullie het model gedeelte van het MVC pattern aan? Voor elke tabel een class maken die de tabel representeert? Of enkele classes maken die database handelingen uitvoeren en voor elke tabel kunnen worden gebruikt (dus je moet bij elke functie aangeven voor welke tabel de handeling bedoelt is)? Of hebben jullie nog andere manieren?
@Marten
Ik zelf zal het in ieder geval niet zo gaan aanpakken, omdat je op deze wijze weinig waarvoor OOP bedoelt is eruit haalt, want nu moet je als nog een boel telkens opnieuw scripten, terwijl dit doormiddel van goed hergebruik onnodig zou zijn geweest.
@wimmarien
Daar zat ik zelf ook aan te denken. Maar dan behoudt ik wel het gebruik van Models, namelijk door het volgende te doen:
Als de standaard functies van mijn model-parent-class niet voldoende zijn, dan maak ik een aparte class aan, die waarbij nodige bepaalde functies van de model-parent-class overschrijft.
Dat lijkt mij tot dusver de meeste handige manier. Nog andere suggesties of misschien verbeteringen voor mijn idee?
Ik zelf zal het in ieder geval niet zo gaan aanpakken, omdat je op deze wijze weinig waarvoor OOP bedoelt is eruit haalt, want nu moet je als nog een boel telkens opnieuw scripten, terwijl dit doormiddel van goed hergebruik onnodig zou zijn geweest.
Ik heb het zo gemaakt dat ik alleen de classe variabelen hoef aan te passen
Dus.. het voorbeeld dat je me gaf was niet de manier hoe je momenteel te werk gaat? Want bij het voorbeeld moet je steeds als je bijvoorbeeld een nieuw model zou maken steeds weer die insert queries en update queries gaan scripten, terwijl deze in al jouw modellen (bijna) altijd op hetzelfde neerkomen, zijn dan wel queries voor andere tabellen met weer andere bijbehorende velden, maar je zou al die functies heel simpel kunnen samenvoegen, waarbij je bijvoorbeeld alleen:
Het probleem dat je zal tegenkomen zijn tabel relaties als je voor iedere tabel een aparte model maakt. In Zend Framework wordt dit zeer handig opgelost met dependTables waarin je de relaties defineert tussen de models (en dus de tabellen). Daarnaast raad ik aan om met PDO te werken omdat die al een heel deel van jou lasten overneemt. Het enige wat je moet doen is een soort parent class maken met functies als
@Marten
Ok, en hoe pak jij het eigenlijk aan met JOINS, heb je daar ook een aparte functie voor geschreven, of schrijf je deze nog altijd voluit in een query? In CakePHP hebben ze daar een mooie techniek voor gebruikt, maar ik ben niet van plan om het zo ingewikkeld aan te gaan pakken .
@Stijn
Dus Zend Framework, doet ongeveer hetzelfde als wat CakePHP doet met relaties tussen models? Hmm.. dan zal die methode toch wel de moeite waard zijn om proberen in mijn mini framework in te bouwen.
Mja ik ben iemand die graag een persoonlijk touch geeft aan iets en ben dus aan het uitvissen hoe ik zend framework en relaties met models beter kan maken. Een voorbeeldje van wat ik dacht uit te breiden in ZF: