Hallo!
Danke für die Antworten soweit und sorry für meine etwas langsame Reaktion darauf - war im Kino. Doch zurück an die Arbeit, ich hab schon gesehen, dass dieses Thema öfters angesprochen wird :) Ich sehe ein, dass die Idee der "draw"-Methoden zwar gedanklich vielleicht leichter, dafür aber nicht sinnvoll sind. Eine Aufteilung nach MVC würde dann wohl so aussehen:
-
Model: eine Abbildung meiner Datenbanktabellen als Objekte. Z.B. eine Klasse BENUTZER[username, password, email] mit entsprechenden set und get-Methoden (inkl. SQL-Querys).
-
View: Sämtliche darstellende Funktionen, z.B. für das Beispiel des Benutzers eine [Benutzername][Passwort][Button]-Kombination, aber auch Formulare zur Änderung von Benutzerdaten etc.
-
Controller: alles was Logik ist.
Z.B.: Nicht eingeloggt? Rufe aus View-Komponente "drawLogin" auf. Vergleiche mit Datenobjekt aus DB. Wenn ok, nächster Schritt...
Model und View sind quasi "dumme" Lieferanten und Arbeiter, Controller macht die ganze Arbeit. Schade, dass es das nicht bei Programmieren gibt, ich wäre jetzt gerne Model und View ;)
Ich werde mich mal daran machen und das umsetzen. Beim Weg vom Kino nach Hause ist mir aber noch was eingefallen...
Angenommen ich springe von einer Datei (a.php) zur anderen (b.php). Dann habe ich doch alle meine in a.php erzeugten Objekt-Instanzen verloren? Also nutze ich die $_SESSION als Objekt-Ablage? Ist das legitim?
Beispiel:
- Jemand loggt sich auf "a.php" ein, also passiert
$benutzerObj = new Benutzer(); - Benutzer möchte seine Daten ändern, die Controler-Komponente veranlasst also, dass ein Formular zum Ändern der Benutzerdaten angezeigt wird
- Controllerkomponente macht zusätzlich
$_SESSION['benutzerdaten'] = $benutzerObj; - Benutzer füllt das aus und schickt es ab (per POST)
- POST-Daten werden an z.B. "b.php" geschickt, dort weiß der Controler (woher auch immer???), dass er folgendes zu tun hat:
$benutzerObj = new Benutzer();
$benutzerObj = $_SESSION['benutzerdaten'];
$benutzerObj->setData($_POST[...]...);
$benutzerObj->saveData();
Klappt dieser Gedankengang? Objekte in der SESSION "parken", damit ich die die Zustände nicht verliere? Geht das überhaupt? Werd das glaub mal schnell testen, aber vielleicht weiß jemand von euch Vor- und Nachteile?
Viele Grüße
zippex :)