Hallo, Ik zou graag MVC leren programeren binnen php. Maar weet niet direct hoe te starten,
Heb al heel wat lopen opzoeken, maar vind niet direct een ideale tutorial voor beginners.

Hoe kan ik het best beginnen met MVC?
Waar vind ik goede tutorials?

vriendelijke groeten,

Moe
Wil je gebruik maken van een bestaand framework, of een eigen framework bouwen?
MVC gewoon doen wat je denkt te moeten doen in de aard van de theorie;

Begin eerst eens met models en los te maken; das voor vele al moeilijk genoeg.
Paar tips als je MVC wilt leren:

1. Hou je View classes zo dom mogelijk. Een view doet eigenlijk niets meer dan je gegevens presenteren. De enige logica die erin zou zitten heeft met presentatie te maken. Dus bijvoorbeeld een for-loopje als je een array wilt laten zien, of misschien een class die een negatief getal in het rood laat zien via een if. View classes hebben vaak een array $viewdata, waarin je de waarden opslaat die nodig zijn voor een bepaalde view. Ook hangt er meestal een template aan een view, die je op de goede plek kunt requiren.

2. Laat alle DB logica aan je model classes over. Je database-laag kun je abstract maken met PDO. Daarop bouw je classes die basisdingen doen, zoals CRUD. Denk aan bijvoorbeeld een class PageModel, die de database-lociga afhandelt voor het aanmaken, bewerken en wissen van pagina's.

3. Stop de business-logica van je programma in je controllers. Veel MVC frameworks doen het op deze manier:

Door middel van een .htaccess bestandje maak je vriendelijke url's, zoals: http://www.mijnsite.nl/controller/action/id

Via GET haal je dan op, welke controller class er geladen moet worden, en welke action memberfunctie van die controller er uitgevoerd moet worden. Het id is dan handig als er iets bewerkt of gewist moet worden.

Om dit allemaal uit te vogelen wordt vaak een zgn. "FrontController" class gebruikt, die kijkt wat er allemaal in de GET array zit.
@Jan, met het meeste ben ik het eens toch het volgende:
Toevoeging op FrontController: dit is een design pattern en hier is een goede uitleg te vinden: http://wiki.phpfreakz.nl/FrontController

Stop de business-logica van je programma in je controllers.

Ik geef toe het is een punt waar over te discussiëren valt, maar ik zou dit ook in mijn models stoppen. Een controller dient voornamelijk als "doorgeefluik". Ik las eens "De enige goede controller is een lege controller." Beter bekend als "skinny controller fat model"
Code in een model is bijvoorbeeld veel makkelijker te hergebruiken dan code in een controller.

@TS:
Als je met MVC wilt leren werken is het volgens mij het makkelijkste om te beginnen met een bestaand MVC framework en gewoon wat tutorials te volgen, dan zal het van zelf duidelijker worden denk ik. Een goede om mee te beginnen is denk ik: codeigniter.
@ Boaz: skinny controller fat model ken ik. Binnen MVC zijn er weer heel veel stijlen. Ik vind het overzichtelijker om de business-logica en de DB logica gescheiden te houden. Wat dat betreft is er voor elk wat wils.
ik moet wel zeggen dat ik MVC ken van java! Dus de werking ervan ken ik wel. maar de opzet van de gebruikelijke router.class en registry.class zijn nieuw voor me.

Maar ik zal anders wel eens eerst beginnen met een bestaand framework, dan zal het me wel duidelijk worden.

is ZEND een goede om mee te starten?
Zend is prima, maar je moet er wel in duiken. Ik raad je aan om eerst zelf een mini-framework in elkaar te sleutelen, zodat je tenminste ongeveer weet hoe het werkt.
CakePHP is ook wel een goede:)
@Jan: Ik leer eigenlijk het beste, als ik in de code van een goed voorbeeld kan duiken. Zeker als ik met iets nieuws begin.

Mss iemand een bestaand mini-framework?

Reageren