MVC
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?
Begin eerst eens met models en los te maken; das voor vele al moeilijk genoeg.
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.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Toevoeging op FrontController: dit is een design pattern en hier is een goede uitleg te vinden: http://wiki.phpfreakz.nl/FrontController
Quote:
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.
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:)
Mss iemand een bestaand mini-framework?
In de posts hierboven wordt alles al een beetje beschreven, ben het alleen niet zo eens met de bewering dat views dom moeten zijn. Mijn insziens kan het een hoop gedoe besparen indien je de views enkele, read-only, permissies geeft.
Duik verder eens in de advanced discussies op phpfreakz, dat geeft je een goed beeld zonder direct vele regels code te moeten doorspitten.
Als je meteen naar een bestaand framework wilt kijken, zoek er dan wel een geschreven in PHP5.
Gewijzigd op 01/01/1970 01:00:00 door Mark PHP
binnen MVC wordt nog gebruik gemaakt van andere design patterns. Meestal het Registry Pattern, zodat je geen globals hoeft te gebruiken, het (reeds genoemde) Frontcontroller Pattern en het Singleton Pattern voor je database-connectie.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Quote:
en het Singleton Pattern voor je database-connectie
Maar wat nu als je meerdere database-connecties wil hebben?
Zelf gebruik ik (haast) altijd een singleton registry waarin dus bijvoorbeeld meerdere databases kunnen worden opgenomen. Een registry hoeft maar één keer voor te komen, want indien er twee maal een bepaald element uit het registry nodig is, kan je er gewoon verschillende namen aan geven.
@Aar: Ik zou graag zelf 1 maken, maar weet niet goed hoe eraan te beginnen.
Agirre schreef op 08.09.2009 00:07:
MVC is een design pattern, wat wil zeggen dat het op 1001 manieren gerealiseerd kan worden. Bijna elk bestaand framework implementeert wel een MVC model.
In de posts hierboven wordt alles al een beetje beschreven, ben het alleen niet zo eens met de bewering dat views dom moeten zijn. Mijn insziens kan het een hoop gedoe besparen indien je de views enkele, read-only, permissies geeft.
Duik verder eens in de advanced discussies op phpfreakz, dat geeft je een goed beeld zonder direct vele regels code te moeten doorspitten.
Als je meteen naar een bestaand framework wilt kijken, zoek er dan wel een geschreven in PHP5.
In de posts hierboven wordt alles al een beetje beschreven, ben het alleen niet zo eens met de bewering dat views dom moeten zijn. Mijn insziens kan het een hoop gedoe besparen indien je de views enkele, read-only, permissies geeft.
Duik verder eens in de advanced discussies op phpfreakz, dat geeft je een goed beeld zonder direct vele regels code te moeten doorspitten.
Als je meteen naar een bestaand framework wilt kijken, zoek er dan wel een geschreven in PHP5.
Stem hiermee zeker in. Er is hier op het forum al eerder een discussie geweest over Frameworks, en daar werd toch wel enigszins geconcludeerd dat Kohana heel goed is op te pakken. Tevens is Kohana "Strict PHP 5 OOP" en "Uses the MVC pattern". Op de homepage staat nog wat meer en kan je het downloaden om een poging te wagen. Schroom natuurlijk niet hier je vragen te stellen!
PHPCake en CodeIgniter raad ik je aan om mee te beginnen. Voor het meer serieuze werk kun je er zelf 1 maken of kijken naar Zend.
Pepijn schreef op 09.09.2009 17:32:
Waarom ga je niet eerst met 1 werken? Misschien snap je het dan allemaal wat beter.
PHPCake en CodeIgniter raad ik je aan om mee te beginnen. Voor het meer serieuze werk kun je er zelf 1 maken of kijken naar Zend.
PHPCake en CodeIgniter raad ik je aan om mee te beginnen. Voor het meer serieuze werk kun je er zelf 1 maken of kijken naar Zend.
Agree @ eerste , echter:
(lekker weer framework topic herhalen ^_^ ):
Ga geen codeigniter gebruiken. Als je nu toch begint, doe het dan gelijk goed en begin aan php5 OOP. Kohana bouwt voor op codeigniter maar dan met php5. En dan mag je van mij zelfs nog zend gaan gebruiken, die is ook nog wel wat bij de tijd ;) (maar wel wat lastig te leren) )maar wel MVC)
Afra schreef op 09.09.2009 19:18:
Agree @ eerste , echter:
(lekker weer framework topic herhalen ^_^ ):
Ga geen codeigniter gebruiken. Als je nu toch begint, doe het dan gelijk goed en begin aan php5 OOP. Kohana bouwt voor op codeigniter maar dan met php5. En dan mag je van mij zelfs nog zend gaan gebruiken, die is ook nog wel wat bij de tijd ;) (maar wel wat lastig te leren) )maar wel MVC)
Pepijn schreef op 09.09.2009 17:32:
Waarom ga je niet eerst met 1 werken? Misschien snap je het dan allemaal wat beter.
PHPCake en CodeIgniter raad ik je aan om mee te beginnen. Voor het meer serieuze werk kun je er zelf 1 maken of kijken naar Zend.
PHPCake en CodeIgniter raad ik je aan om mee te beginnen. Voor het meer serieuze werk kun je er zelf 1 maken of kijken naar Zend.
Agree @ eerste , echter:
(lekker weer framework topic herhalen ^_^ ):
Ga geen codeigniter gebruiken. Als je nu toch begint, doe het dan gelijk goed en begin aan php5 OOP. Kohana bouwt voor op codeigniter maar dan met php5. En dan mag je van mij zelfs nog zend gaan gebruiken, die is ook nog wel wat bij de tijd ;) (maar wel wat lastig te leren) )maar wel MVC)
klopt als een bus. Jammer aan codeigniter is dat het php 4 is. echter heb ik het wel via dat platform geleerd. En het gaat er hier toch om hoe je het best met MCV kunt werken?
Ga dan Kohana gebruiken als je per se aan CodeIgniter wilt blijven kleven. Kohana is namelijk de PHP5 port van CodeIgniter en iet wat verbeterd.
Codeigniter om mee te beginnen, daarna uiteraard Zend.