Rolf B: Wie Darstellung und Inhalt trennen?

Beitrag lesen

problematische Seite

Hallo borisbaer,

man kann über dieses Tutorial geteilter Meinung sein. Meine Projekte mit PHP (alle hobbymäßig) sind nie so vorgegangen. Ich hatte dieses Tutorial bisher nicht gesehen. Einiges darin mag auch eine Stilfrage sein.

Sicherlich ist es nett, wenn man ein formal vollständiges, aber für die Seite unfertiges HTML Dokument für die Unterseiten hat und dessen Inhalte in ein Template für die eigentliche Seite hineinmontiert. Einfach nur title und body herüberzuziehen ist für reale Webseiten aber deutlich zu kurz gesprungen.

Und der Teil des Tutorials, der so richtig ins Eingemachte gehen will, wurde dann ja auch nicht mehr geschrieben (Interpretation von eigenen Templates). Was ich gut finde, denn letztlich IST PHP eine fertige Template-Sprache und ich kann mit include und <?= ... ?> Bausteine und Werte einfügen.

PHP ist aber in dem Moment am Ende, wo Du parametrierbare Bausteine hast. Dein MARKER ist ein solcher. Was Du mit include hereinholst, kannst Du zur Not über globale Variablen mit Daten versorgen, das würde ich aber nie empfehlen. Da ist die MARKER-Funktion schon besser.

Ich habe mich mal eine Zeitlang mit Smarty beschäftigt. Das ist eine eigenständige Template-Sprache, die vom Smarty-Compiler in PHP übersetzt wird (und zwar im Hintergrund, du merkst nichts davon). Dort kannst Du eigene Bausteine erzeugen und mit PHP realisieren, und diese Bausteine können auch Parameter haben. Aber auch da wird es grenzwertig, wenn Du eine Seite mehr oder weniger im Freistil zusammenbaust. Deine Kartenansicht ist etwas, was sich für ein allgemeingültiges Template aus meiner Sicht nicht eignet.

Es ist gut, wenn man wiederverwendbare Bausteine hat, die Fragmente der Seite erzeugen können. Solange sie konstant sind, kann man sie mit include einbinden. Wenn sie mit Daten versorgt werden müssen, halte ich es für schlechten Stil, wenn die Bausteine sich diese Daten selbst beschaffen. Statt dessen müssen sie sie übergeben bekommen. Natürlich kann man einen Katalog von "well known variables" wie $site_name erstellen und diese in den Templates zur Benutzung freigeben, so wie Felix das im include-Kapitel macht. Aber das dürfen nur ein paar sein, die wirklich auf jeder Seite gebraucht werden.

Was mich ernsthaft stört, ist, dass die Templates den global namespace vermüllen. Das passiert in nav und in footer - aus meiner Sicht nicht empfehlenswert. Ich habe allerdings auch keine für Einsteiger brauchbare Lösung.

Der Gedanke, mit include die Templates lediglich in Form einer Funktion zu laden und diese Funktion dann an der passenden Stelle aufzurufen, gefällt mir deutlich besser. Aber das ist meine eigene Sicht der Dinge, ob sich das für's Wiki eignet, weiß ich nicht. Ich weiß aber eins: Die Wiki-Artikelserie zeigt nur sehr einfache Aufgabenstellungen, mit denen man bei komplexeren Seiten schnell am Ende ist. Lass Dich davon darum inspirieren, aber sei frei, es nach deinem Geschmack auszubauen. Die MARKER Funktion ist okay, finde ich.

Rolf

--
sumpsi - posui - obstruxi