hotti: OOP (in PHP) - 3 Fragen

Beitrag lesen

hi,

  • Ich habe eine Klasse "page", die die Verwaltung der Seiten übernimmt. Diese hat verschiedene Methoden, unter anderem "load", mit der man eine bestimmte Seite in den Speicher lädt. Wo aber gehört denn die Funktion (ich meine nicht "Subroutine") zum Auslesen der Seite aus den GET-Parametern hin? In die Klasse? Oder einfach außerhalb in das Script?

Vorschlag:
load.php ist ein eigenständiges Script, sozusagen der Handler für jeden Request und auf den wird alles per rewrite umgeschossen.

Du sprichst von einer "Verwaltung der Seiten", das passt, gute Idee! Geht dann wie folgt weiter: load.php kriegt den Request, ermittelt aus REQUEST_URI den PATH und fragt in der Verwaltung nach, ob es den gibt. Wenn ja, wird ein Response-Object (Instanz Deiner Klasse) erstellt, wenn nein, ein 404 geworfen.

Im Ja-Zweig gehts dann so weiter: Das Response-Object ruft nun die Methoden auf, welche die Seite erzeugen. Eine weitere Kontrolle prüft, ob Parameter anliegen. Somit können nun alle möglichen Content-Types ausgegeben oder ein Template bestückt und ausgegeben werden.

  • Und wo packt man die Umleitung auf Fehlerseiten hin?

Keine Umleitung. Entweder wird eine fehlerhafte Eingabe über einen festen Platzhalter im Template geführt oder der Body wird komplett gegen eine Fehlerseite ausgetauscht. Umleitungen sind Mist, das verwirrt den Besucher und erschwert Deine eigene Fehlersuche.

dann die Klasse die Fehlerseite laden?

Mach es nicht so kompliziert. Jede Fehlerbehandlung kann über das Response-Object (Instanz Deiner Klasse) abgewickelt werden.

  • Die letzte Frage, die eigentlich aus den anderen beiden hervorgeht ist, ob man sowas wie Session-Initialisierung,

Wenn Du eine Verwaltung hast, haben die Response-Objecte auch Attribute. Eins davon legt fest, ob Session oder nicht Session.

* Diese Klasse stellt ein paar statische Methoden zur Verfügung, die die eigentliche Funktionalität des CMS ausmachen: Dateien mit gleichzeitigem Locking laden und dann das enthaltene JSON parsen und zurückgeben, etc. etc.

Ich mache das mit Templates. Beispiel:
 /foo.html
ist ein Formular mit dem Platzhalter %result fürs Ergebnis. Der Controler (Methode Deiner Klasse CMS) prüft den Request, der kann vom Submit (S) kommen oder es ist Ajax (A).

Submit) das Template wird neu geladen %result mit dem Ergebnis bestückt
Ajax) es wird nur das Ergebnis als JSON gesendet und per DOM das %result beschrieben

Hotti