[MVC] Vragen omtrend gebruik Model, Controller en View
Nu ben ik van plan om XML te gebruiken voor die website i.p.v. een database. Dit lukt allemaal wel, maar ik zat met een vraagje over het ophalen van de gegevens. Moet dit gebeuren in de Model of de Controller?
De Model is voor het gegevens ophalen uit de database, of ook van een XML file?
Gewijzigd op 06/09/2011 19:58:09 door Wouter J
Zoals ik erover denk:
In de model, zonder twijfel.
Hier moet je alle logica verwerken.
In de controller moet je alleen de routing en via de models data ophalen. Zeg maar 'aan elkaar knopen' van logica.
Eigenlijk staat XML er los van. Dus dat maakt het ook flexibel.
Want wanneer je straks wel een database tot beschikking hebt, dan hoef je alleen je model class aan te passen, en de rest werkt perfect verder :) (als het goed is).
Je model moet wel op zichzelf staan. Dus niet weer afhankelijk van je routing of get waardes...
Dus stel je dat je index controller zoiets is:
-->controller
public function indexAction(){
$oNews = new News();
$this->view->news = $oNews->getNews();
}
--> model class News{
public function getNews(){
//connecten naar je db of xml
// haal je data op
// db connecties of andere resources hier verwerken.
return $aNews;
}
--> view class bijvoorbeeld..
echo $news;
Zoiets denk ik.
Helemaal ideaal is het als je model/domein object/entities (new, user, post) zelf ook los staan van de opslag en dat een apart model hier weer voor zorgt. Dat heet het Datamapper patroon (min of meer).
En Datamapper is dus eigenlijk dat je voor elk object een Model maakt. Ik maak nu een blog, dus ik heb een PostModel en een UserModel. En daarnaast nog een model om de pagina dingen op te halen (zoals navigatie)?
En wat ik nog niet begrijp is wanneer je een nieuwe controller gebruikt. Bij die blog. Heb ik dan een IndexController voor de index en contact pagina en een BlogController voor de blog pagina's. Of moet ik ook nog een ContactController hebben?
En als we dan toch bezig zijn. Is het verstandig om heel veel views te hebben (index, singlePost, categorie) of is het verstandig om te zo klein mogelijk te houden? Mijn gevoel zegt het laatste, maar volgens mij is het eerste...