Mailinglisten-Archive |
Hallo Michael,
Michael Pietsch schrieb:
> Gibt es dafuer einen Königsweg oder muss man sich halt durch das
> entstehende Code-Gestruepp durchkaempfen?
> Kann man strikt den Programmablauf und die HTML-Ausgabe trennen
> oder greift
> man da am besten auf irgend etwas fertiges zurueck (HTML-Editor ...)?
Es gibt nicht nur einen Königsweg, es gibt sogar 2.
Das Problem der zunehmenden Komplexität von
PHP-HTML-Geflechten wird meistens mit Templates gelöst.
Templates trennen die Funktionalität vom Layout, indem das
Layout in getrennte Dateien stattfindet. Diese
Template-Dateien sind eigentlich ganz normale HTML-Dateien,
nur an die Stelle der dynamischen Abschnitte/Texte tritt
ein Platzhalter, die sogenannte Template-Variable, meist etwas
in der Art "{TITEL}", die dann z.B. so im HTML-Source wieder-
zufinden ist : "<html><head><title>{TITEL}</title></head>..." .
Auf der anderen Seite, im Code selbst, wird meist eine
Template-Klasse benutzt, die Funktionen zur Belegung und
zum Ersetzen der Templatevariablen bietet.
Templates bieten zwei Vorteile:
- sie lassen sich durch einen normalen HTML-Editor erstellen
und bearbeiten
- durch die hierarchische Struktur von HTML lassen sich auch
geschachtelte Templates oder Blöcke übersichtlich nutzen.
Die gängigsten Template-Lösungen sind wohl die FastTemplates,
die (ohne die PHPLIB nutzbaren) Templates der PHPLIB oder
Till & Tobias EasyTemplates.
Ich habe mit der PHPLIB-Klasse, abgesehen von der seltsamen
Block-API, nur gute Erfahrungen gemacht.
Der zweite Königsweg ist XSLT . Glücklicherweise greift uns
PHP mit der Unterstützung der Sablotron-Engine dabei
unter die Arme.
XSLT geht bei der Trennung von Layout und Funktion noch
deutlich weiter, weil es keine Templatevariablen, sondern
die komplette Ausgabe in logischer Darstellung als Grundlage
nimmt.
Praktisch heisst das : Das PHP-Script erzeugt eine XML-Datei,
die die komplette Ausgabe enthält. Aus diesem XML läßt sich
mit verschiedenen XSLT-Stylesheets alles mögliche an Ausgabe
erzeugen, wie etwa HTML, ein anderes XML, WML oder auch mit einem
weiteren Zwischenschritt PostScript oder PDF.
Der XSL-Syntax ist erheblich komplexer als die Erstellung von
Templates, und so ist auch die Lernkurve deutlich steiler.
Im Gegenzug sind die Möglichkeiten natürlich viel weiter
gespannt.
Viele Grüße, johann
php::bar PHP Wiki - Listenarchive