Christian S.: (PHP) Navigation

Beitrag lesen

Hi,

danke für deine Antwort, auch wenn sie sich etwas schwerfällig lesen lässt.

Mir stellt sich an diesem Punkt aber eine andere Frage aus der Überlegung heraus, dass Du eine Datenstruktur hast, die ursprünglich die Lage von zu servierenden Resourcen in einem Dateisystem abbildet. Die Abbildung (Abstraktion) lässt sich in der gewählten Programmiersprache mit rekursiv erstellten, mehrdimensionalen Datenfeldern (Array) für PHP am sinnvollsten verarbeiten. Soweit so gut. Warum willst Du mittels XML eine weitere Abstraktion erstellen? Was spricht gegen ein Speichern der Datenstruktur seitens PHPs durch serialize() (und im umgekehrten Fall unserialize()? Kann auf eine Zwischenspeicherung ganz verzichtet werden, weil der Aufwand, den Du in jedem Fall betreiben willst, des permanent Auslesens der Verzeichnisstruktur gleich kommt?

So ganz versteh ich es nicht.

Ich wollte die Navigation in XML abbilden, statt in einem PHP Array, weil ich denke dass es sauberer und einfacherer wartbar ist.
Das ist etwa so wie die Frage: "CSS inline schreiben oder extern einbinden".

Wenn ich das richtig verstehe, sollte ich die Struktur in PHP erzeugen, und dann serialisiert ablegen? Und wenn ich sie dann wieder brauche, wieder deserialisieren?

Ich glaube ich hab es nicht verstanden, was du willst, denn es doch egal, ob die Daten dann in XML vorliegen oder binär.

Wenn Du davon ausgehst, dass die Web-Struktur der Verzeichnisstruktur entspricht, zeigen sich bei einem permanenten Auslesen bereits hier erste Vorteile. Wenn Du Dir nicht selbst einen XML-Parser schreibst, muss Dein Programm bei jeder Anfrage die gesamte XML-Struktur einlesen und verarbeiten, denn so sind die Verfügbaren XML-Parser PHPs nun mal geschrieben. Andernfalls können bei einem Direkten Auslesen der Struktur immer die navigationsbedingten Teile ausgelesen werden.

Davon möchte ich ja nicht ausgehen. Physikalisch kann z.B. eine andere Struktur vorliegen, als die die man später auf der Webseite sieht.

Selbst wenn, müsste ich immer noch bei jeder Anfrage das XML abparsen, um aus dem physikalischen Pfad einen formatierten Titel (der dann irgendwo in der XML datei steckt) herauszufinden.

Unter selber Annahme, der der Kongruenz von Web- und Verzeichnisstruktur, müsstest Du jeweils nur von getcwd() $_SERVER['DOCUMENT_ROOT'] subtrahieren und könntest mittels [link:http://de3.php.net/manual/de/function.explode.php@title=explode]('/' /* bei Win: '\' */,$diff); die aufsteigende Navigation abstrahieren.

ja, dann müssten meine Verzeichnisse genauso heißen, wie sie auch in der Navigation zu sehen sein sollen. D.h ich könnte keine Umlaute oder Leerzeichen benutzen.

Bräuchte man für so etwas einen Art Navigationsmanager oder BreadcrumbManager?

Keinesfalls.

Und wie würde man so was dann lösen (mein Beispiel mit den dynamischen Artikeln, die aus ner DB kommen)?

Schieße nicht auf Deinen Spatz! Wenn Du zu solchen Kanonen greifst, wird es Dir einstweilig die Hand abreißen.

vermutlich...

Also ich mach es jetzt im moment so, dass ein XML File hab, (ähnlich wie beschrieben).
Dort steht die baumartige Struktur drin, und zu jedem <item> habe ich ein Attribut "href" und "title".
Bei einer Anfrage, wird $_SERVER['PHP_SELF'] mit jedem href verglichen, bis eine Übereinstimmung gefunden wurde. Während der rekursion merk ich mir den Pfad und kann so mit die Navigation erstellen. Und das "title" Attribut dient gleichzeitig als <title> und <h1> Wert meiner Seite...

Gruß!