Den meisten meiner Leser ist bekannt, das ich kein Freund von Template-Engines bin. Diese unnützen Klassen und Bibliotheken “versuchen” Optik von Logik und Business-Code zu trennen - was dabei herauskommt, nennt sich unter Umständen Smarty und ist ein Witz.
Bei meinem Lieblings-Template-Veteranen Smarty wird PHP Code durch Pseudo-Code ersetzt - irgendwelche Schleifen- und Bedingungskonstrukte, verstümmelte Variablennamen und Nicht-HTML Tags fliegen kreuz und quer durch die HTML Landschaft. Im schlimmsten aller Fälle verteilt über verschiedene Template-Dateien.
Das nächste Level der Verrücktheit sind CM-Systeme, die alles unnötig komplizieren (obwohl alles einfacher werden sollte), noch mehr Pseudo-Tags und -Code einführen und ein Desaster an Performance anrichten. Das beste Beispiel ist Typo3, aber auch große kommerzielle CMS Hersteller wie Day, Red Dot, Vignette, Fiona (von Infopark) und Imperia (Reihenfolge ohne Wertung) begehen ähnliche Fehler. Die Performanceschwäche wird übrigens meist mit dem genialen Statischen-Cache-Feature wieder gut gemacht.
Gibt’s denn kein Projekt, das das besser macht?
Bei nicht PHP-basierten CM-Systemen kann man über Pseudo-Tags hinwegsehen, schließlich muss ja der gehamsterte Content irgendwie mit HTML verpackt werden. Aber was überhaupt nicht geht, ist Pseudo-Code mit dem ganze If- und For-Konstrukte in HTML eingebettet werden.
Dazu kommt meist eine fürchterlich überladene Oberfläche mit Funktionen, die keiner benötigt, und was man benötigt, muss man bei kommerziellen Anbietern richtig teuer nachkaufen. Da gehts dann meist schon nicht mehr um 4-5 stellige Beträge, sondern um knackige 6 stellige Gelder, die hier für Webschrott ausgegeben werden. Jeder will ja beim Web 2.0 eine gute Figur machen ;)
Dort wo Smarty wenigstens bei einer Technologie bleibt, kombinieren die meisten kommerziellen WCMS Anbieter mehrere Technologien wie Perl, Java, C++ und irgendwelche Shelltools. Was rauskommt ist eine bunte Trallala-Applikation, dekoriert mit schicken Servelets, feinen Docklets, schnuckeligen Applets und super Frames (Huhu, ein kleiner Wink ans SAP Portal ;-). Liest sich schrecklich, klingt furchtbar und man sollte es niemals wieder anfassen, wenns mal läuft.
Okay, ich bin ein bisschen vom Thema abgedriftet, um meinem Unmut Luft zu machen. Was war doch gleich das Thema? Achja, Template-Engines. Also zu der bereits ausfürlich ;) erwähnten nicht vorhandenen Trennung zwischen Content und Logik, fantastischen Pseudocodes und -tags, irgendwelchen dubiosen Scriptsprachen wie TypoScript kommt dann noch die massenweise Verschwendung an kostbarem Arbeitsspeicher:
Denn woran die meisten nicht denken, Template Engines duplizieren nahezu den benutzten Speicher. Na gut, nicht direkt die Template-Engines - aber welcher Entwickler gibt in PHP die Variablen wieder frei, nachdem sie an die Template Engine übergeben wurden?
Im Idealfall platziert das Template-Framework die Inhalte da, wo sie hin sollen und spuckt den generierten HTML Klumpen in ein Cache-Verzeichnis um dem Server beim nächsten Abruf etwas Rechenleistung zu ersparen.
Aber warum der ganze Aufwand? PHP ist doch bereits eine Template Engine? Warum einen Parser bauen, wenn’s PHP schneller kann? Warum Keywords für Variablen einführen, wenn PHP die direkte Einbettung mit <?= $variable ?> bereits unterstützt?
Die Berechnung und Organisation von Werten muss natürlich ausgelagert werden - keine Frage. Aber auch dafür gibts schöne PHP Funktionen; Du wärst bestimmt nicht der Erste, der PHP Code in HTML einbettet.
Ach und übrigens: Auf Sub-Snippets kann man meiner Meinung nach auch verzichten. Was ich meine? Diese lieben kleinen HTML-Abrisse, die gerne in Schleifen wiederholt werden (Vielleicht für einen Breadcrumb oder eine Downloadliste). Die verrückteste Idee ist, diese Dinge in eigene Dateien zu packen und bei jedem Schleifendurchlauf von der Platte zu laden. Du weiß schon, das der langsamste PC Baustein die Festplatte ist?
Zum Schluß noch eine kleine Empfehlung, schließlich soll das Lesen des Artikels nicht umsonst gewesen sein. Ed Eliot hat vor einiger Zeit ein kleines Projekt veröffentlicht, das die Vorteile von PHP nutzt. Deshlab gibts von Ihm eine Mini-Template-Engine, mit deren Hilfe man prima HTML von Logik trennen kann ohne eine Prozessor-Orgie zu veranstalten.
Hat das Ding einen Namen? Nein, ich glaube er nennt es nur Template-Engine. Ok. Übrigens: Wer’s nicht lassen kann, mit seiner Template-Engine ist es auch möglich, Templates zu verschachteln…
Ähnliche Artikel:





