Hi!
Bzw. ich zeige dir mal was ich eigentlich vor habe in Code ausgedrückt:
[...]
$Mywebside->Galerie->Fotos->bearbeiten = "Galerie/Fotos/bearbeiten"
Ich wollte eben irgendwie fest verankern welche aufrufbaren Seiten existieren.
Warum schreibst du das nicht in ein einfaches Array?
$Mywebside = array();
[...]
$Mywebside[] = "Galerie/Fotos/bearbeiten";
Das war so nen bisschen der Kerngedanke.
Das ich eben meine Webseite logisch in ein Objekt nachbilde.
Aber du hast das noch nicht (zumindest mal im Kleinen) umgesetzt, um zu probieren, wie sich diese Objekte nun weiterverarbeiten lassen, stimmts? Wenn du Zeit und Lust hast, kannst du das ja mal spaßeshalber machen, um ein Gefühl zu bekommen, ob diese Idee gut war oder ob sie nur weitere Folgeprobleme nach sich zieht (so wie ich das vermute).
Was kann meine Galerie alles? Sie unterscheidet zunächst mal zwischen Illustrationen und Fotos, deswegen also:
Sind Illustrationen und Fotos aus Programmsicht verschiedene Dinge mit unterschiedlichen Eigenschaften? Oder ist das einfach nur ein Ordnungskriterium und somit "Illustrationen" und "Fotos" nur Werte einer Eigenschaft der Galerie namens "Bildtyp"?
$MeineWebseite->Galerie->Illustrationen;
$MeineWebseite->Galerie->Fotos;
Wenn objektorientiert, dann müsstest du erst einmal abstrahieren und daraus Klassen erstellen. Du hingegen erstellst aus PHPs Default-Klasse (stdClass) einfach einen geschachtelten Objektbaum. Ich versuch mich mal an einem Szenario:
$MeineWebseite könnte ein Objekt der Klasse Webseite werden. Diese hat neben anderen benötigten Eigenschaften eine in der ein Objekt der Klasse Bereich abgelegt wird. Das kann auch eine Klase sein, die von Bereich geeerbt hat, wenn sie für besondere Anwendungsfälle Änderungen an Eigenschaften und/oder Methoden haben soll. Eine Galerie wird auf alle Fälle anders sein, als vielleicht zwei Artikelbereiche, die zwar unterschiedliche Themen behandeln, aber ansonsten den gleichen Unterbau haben. Das heißt, die beiden Artikelbereiche sind Instanzen der selben Klasse, die Galerie eine Instanz einer anderen Klasse. Alle drei erben aber ihre Gemeinsamkeiten von der Bereichsklasse. Für die Galerie wäre es nun sinnvoll, eine Klasse für Bilder zu erstellen. Wenn du mal betrachtest, ob Illustrationen und Fotos programmtechnisch unterschiedlich behandelt werden müssen, so wirst du vermutlich feststellen, dass dies nicht der Fall sein wird. Sie unterscheiden sich nur nach ihrem Inhalt (so wie zum Beispiel zwei Fotos auch), haben aber ansonsten die gleichen Eigenschaften und benötigen die gleichen Methoden. Wenn sie sich doch unterscheiden, dann haben sie zumindest viele Gemeinsamkeiten, die man in einer Basisklasse unterbringen kann.
> Tja und Fotos muss ich ja auch hochladen können, deswegen:
> `$MeineWebseite->Galerie->Fotos->hochladen;`{:.language-php}
> wobei hierbei ja das Hochladen eine Methode ist, eine Funktion der Illustrationen in der Galerie.
Hochladen ist eine Funktionalität, die sich im Grunde zwischen den einzelnen Anwendungsbereichen strukturell nicht unterscheidet. Es ist egal, ob du Fotos, Illustrationen, Musikdateien oder Videos hochlädst. Der Ablageordner wird ein anderer sein, aber das ist dann ein variabler Wert, der dem Objekt der Klasse Hochlader bei der Instantiierung mitgegeben wird. Somit stelle sich heraus, dass die Upload-Funktionalität potentiell in allen Bereichen zum Einsatz kommen kann. Es wäre also geschickt, sie eigenständig zu implementieren und nicht nur als eine Funktionalität der Galerie. Ihre Arbeit wird dann von den einzelnen Bereichen in Anspruch genommen.
> So hatte ich mir das ursprünglich gedacht. Ich dachte eben das gestaltet das ganze übersichtlicher, besser als wenn ich ein riesiges PHP-Script habe das vollgepack ist mit Kontrollstrukturen die jeden einzelnen Fall abfangen, also eben ein typisches Script das von oben nach unten einmal durchläuft.
Du kannst dir die Einzelfallbehandlung nur dann ersparen, wenn du einen Algorithmus implementiertst, der aufgrund von Gesetzmäßigkeiten das Ziel findet. Der einfachste Fall wäre, wenn es ein flaches Array gäbe, deren Keys den aufrufbaren URLs entspricht. Die Werte verweisen auf etwas, das sich um die Erledigung kümmert. Das geht aber nur mit einer festen Seitenstruktur. Für ein Blog, bei dem ständig Beiträge hinzukommen, ist es ungünstig, wenn dazu jedes Mal dieses Array geändert werden müsste. Da kannst du nur den Algorithmus verfeinern, so dass er erst einmal grundlegend erkennt, dass ein Blogbeitrag gewünscht ist, und dann den Namen des Artikel behandelt. Und wenn du Kommentare zulässt, musst du auch noch auswerten, ob jemand gerade einen solchen zu einem Artikel abgeben will. Die Artikelverwaltung wird vermutlich in einem Adminbereich stecken, nicht in dem Blogteil, der sich um die Besucher kümmert.
Lo!