Model-View-Controller Verständnisfrage

mAu

Erfahrenes Mitglied
Hallo liebe Community ;)
Ich lese mich zur Zeit in die verschiedenen Designpattern ein. Besonders interessiert/reizt mich das Model-View-Controll Prinzip. Nur hab ich jetzt eine Frage zur Umsetzung in PHP: Seh ich das richtig, dass der Controller im Prinzip eine Index-Seite hab, die mittels übergebener Parameter (Modul, Action) die Methode Action der Klasse Modul aufruft? Und dass die einzelnen Module aber Zugriff auf die View haben (z.B. Templateklasse, XML-Klasse etc.)? Oder geben die einzelnen Module die Daten an den Controller zurück, der diese dann an die View übergibt?
Danke für eure Zeit :)
 
Danke schonmal für die Antworten.
Den Artikel, bzw. die Artikelreihe kenn ich, darauf basiert eigentlich mein Wissen ;)
So. Ich hab mir jetzt nochmal den Code von dem Framework aus dem genannten Artikel angeschaut. Dort gibt es eine Klasse FR_Presenter_smarty, der View sozusagen. Eine Stelle möchte ich hier daraus mal posten:
PHP:
foreach ($this->module->getData() as $var => $val)
{
	if (!in_array($var,array('path','tplFile')))
	{
		$this->template->assign($var,$val);
	}
}
$this->module ist, wie der Name schon erschließen lässt, eine Instanz des jeweiligen Moduls. Also greift doch hier meiner Meinung nach der View ohne Umweg über den Controller auf das Modul zu?! Ah, bin verwirrt :D Wäre es denn besser (mehr im Sinne des MVC-Patterns), die jeweiligen Daten eines Moduls dem Controller z.B. über eine (wie hier) getData()-Methode bereitzustellen (z.B. als Array) und dann an das View zu geben?
 
Zuletzt bearbeitet:
Ich pushe mal, da mich die Frage ein bisschen drängt :)
Frage: In dem Beispiel von OnLamp.com wird vom View direkt auf das Model zugegriffen (siehe Beispiel oben). Ist es besser, wenn das Model an den Controller die Daten gibt, welcher die Daten dann an das View gibt? Also vereinfacht gesagt so:
PHP:
// controller.php
$data = $modul->getData();
$view->setData($data);
Ich sehe da irgendwie kein großen Vorteil. Naja, warscheinlich bin ich auch noch nicht so ganz in die Materie eingestiegen :) Und kennt vielleicht jemand ein Framework, was noch nicht so weit entwickelt ist wie z.B. CakePHP, Solar etc. Eins, wo man eben noch den Code relativ gut überblicken kann ;)
 
Zuletzt bearbeitet:
Moin!
Unabhängig mal von PHP..
Bin der Meinung, für jede Datenstruktur die man besitzt, sollte auch eine Schnittstelle existieren, wobei nur über diese Schnittstelle man Zugriff auf die Datenstruktur erhält.
Warum? Nun, nehmen wir an, die View würde an verschiedenen Stellen direkt auf das Model zugreifen, und du würdest das Model ändern. Dann müsstest du u.U. auch alle Zugriffe der View nun ändern. Andererseits, würde nur die Datenschnittstelle im Controller auf das Model zugreifen, müsstest du nur dieses ändern..
Das sind zumindest mal meine Gedanken zum Mittwoch..

*grüssle*
MeinerEiner
 
Zurück