Klaus: OOP Konflikt

Beitrag lesen

Hi.

Fehler zu machen, wenn man das erste Mal mit einer Technik in Berührung kommt, ist ganz natürlich. Aus deinen Ausführungen entnehme ich aber, dass dir noch grundlegende Implementierungsdetails unbekannt sind. Ein Controller entscheidet nicht, was auszuführen ist, sondern kümmert sich nur um das Wie. Die Was-Entscheidung obliegt dem Router. Der ermittelt, welche Action eines Controllers aufzurufen ist. Ein Controller kann mehrere Aufgaben eines Themengebiets bündeln. Die Abarbeitung dieser Teilaufgaben obliegt den Actions, was nichts anderes als öffentliche Methoden des Controllers sind. Nichtöffentliche Methoden können Hilfsfunktionen für eine oder mehrere Actions ausführen. Der Routing-Prozess ist Teil des Front Controllers. Der Front Controller ist aber kein direkter Bestandteil des MVC-Patterns, auch wenn er das Wort Controller im Namen führt. Das MVC-Pattern wird jedoch gern mit einen Front Controller verbunden, denn irgendwer muss ja die Actions der MVC-Controller aufrufen.

Moment - das mit den Actions ist jetzt was verwirrend.
Also ein FrontController reagiert z.B. auf Formulareingaben, und instanziert dann die passende Klasse die durch __autoload() nachgeladen werden und ruft den passenden Controller auf, dieser entscheidet dann ein zweites mal, an welche Methode die Daten in "Models" müssen und lässt das Ergebnis dann in "Views" ausgeben.

Richtig?

Der Controller erfüllt mehrere Aufgaben rund um das Board. Diese kommen jede in eine eigene Action. Wenn alle das Model brauchen, so kann man es durchaus im Constructor initialisieren und in einer Objektvariable ablegen. Die konkrete Datenabfrage muss aber die jeweilige Action selbst machen, denn jede braucht ja unterschiedliche Daten.

Definiere Action und gebe mir ein kleines CodeBeispiel für einen Controller bitte. Reicht in Pseudo.

»» boardView.php

Die kommentiere ich nicht extra, denn in meinen obigen Ausführungen stehen (so hoffe ich) genug Hinweise dazu. Nur so viel: Vergiss nicht die kontextgerechte Behandlung der Ausgabewerte (Stichwort: htmlspecialchars()). Auch das ist Aufgabe der View.

Jap ist mir klar geworden =).

Ah ja, hier hast du es ja in der üblichen Strukturierweise angeordnet. Besser so, zuzüglich der obigen Anmerkungen.

Okay. Und wie machst du das mit der Bennenung der Dateien? So wie ich im Beispiel? KlassennameView.php / -Controller.php / -Model.php ?

Der zweite Code-Sample-Kasten von [...]

Danke für diese Ausführungen.

man übergibt besser die Daten einer Helper-Funktion, die die Listendarstellung erzeugt.

Die man dann aber selber schreibt oder?

Lg, Klaus