[PHP] CMS Subpage-implementierung

  • Hiho,


    ich bin gerade dabei mir ein kleines eigenes CMS zu basteln. Zur Zeit ist jede Unterseite eine Klasse gekapselt die eine Basisklasse (für verschiedene Funktionen und Parameter, z.B. Menu Eintrag) implementiert. Zur Zeit wird das ganze manuell in der index.php eingetragen und das möchte ich gerne abändern.
    Ich hatte überlegt, dass ich automatisch alle Klassen im Ordner einbinde und in ein Array instanziere. Daraus kann ich dann das Menu generieren und automatisch je nach angefragter Seite, diese anzeigen ...
    Nur an der Umsetzung haperts jetzt. Dateien auflisten und includen ist kein Ding, aber instanzieren?
    Meine Theorie wäre alles includen und dann per get_declared_classes die durch alle Klassen loopen und mit get_parent_class prüfen ob die Klasse die Basisklasse implementiert. Dann kann ich ja mit:

    PHP
    1. $class = 'testklasse'
    2. $instance = new $class;

    eine neue Instanz auf Basis des Klassennamens aus get_declared_classes erstellen.


    Klingt aber in meinen Ohren wie ... naja ne scheiß Lösung halt :D


    EDIT: Keiner ne Idee oder Ahnung von sowas?
    Ich hatte noch ne andere Idee, dass ich die allen Dateien einen Header verpasse, denn ich dann auslesen kann. ielleicht reicht es auch wenn ich die Datei gleich der enthaltenen Klasse benenne. Das klingt aber auch nicht sonderlich performant.
    Das kann man ja ggf. in einer Datenbank cachen. Dann hat eben der Admin eine Übersicht über alle installierten Seiten (die über oben genanntes Verfahren gesucht werden) und kann diese aktivieren und deaktivieren. Normale Besucher bekommen nur die Seiten die auch in der Datenbank sind.


    Gibts da bessere Methoden?


    Gruß
    florian0

  • Warum willst du das überhaupt so machen? Das ist viel zu umständlich, unsauber und Fehleranfällig noch dazu.


    Es kann ja sein, dass es verschiedene Content-Typen gibt, die eben unterschiedlich dargestellt werden, wie Gästebuch, News, normale Artikel, etc. Der Content und die Konfiguration einer Seite steht aber in einer Datenbank, nicht hardcoded im Quellcode. Zur Konfiguration gehört dann eben der Name, Typ, etc. Je nachdem, welchen Typ die Seite hat, würde entsprechend eine andere Domainklasse instaziiert werden, die in der Lage ist den Content richtig einzubetten. Das ganze ist so modular, jeder Zeit erweiterbar und sehr einfach konfigurierbar, da alles in der Datenbank steht und es über ein entsprechendes Panel eine Unterstützung für Admins wäre und man nicht immer im Quellcode rumwurschteln müsste. Für jeden Content eine eigene Klasse basteln ist aber Schwachsinn.