Jul 01 2008

PHP Template Engines für HTML – irgendwie sinnlos?

veröffentlicht in Kategorie WebWork  

Ok, vielleicht bin ich ja einfach nur zu blöd. Kann gut sein. Im Zuge einer Aktualisierung begann ich damit, unser Newsletter System von “handgemachtem” PHP Quellcode “der halt HTML erstellt” durch eine sogenannten Template Engine für PHP zu ersetzen. Der erzielte Nutzen steht zum notwendigen Aufwand allerdings in keinem Verhältnis.

 

Whoopie! Wir haben nun ne richtige Template Engine.

Nun hab ich nicht mehr eine PHP Datei nach dem Muster:

if ($Anschrift) { print “<table border=0><tr><td>$Anschrift</td></tr></table>” }

Sondern 2 Dateien: eine HTML Template Datei mit der Tabelle

<table border=0><tr><td>{{tag.anschrift /}}</td></tr></table>

und eine PHP Datei mit der Programmlogic zum Ausfüllen des Templates:

if ($Anschrift) { $tpl->set(‘anschrift’, $anschrift);

Dadurch, dass die HTML Template Datei nur in den allerprimitivsten Fällen ohne zusätzlich Logik auskommt, in dem Beispiel oben fehlt das if, konnte so auch die Trennung von Logik und Design wieder nicht erreicht werden. Denn in Praxis sieht das Beispiel in Wirklichkeit so aus – hier die HTML Template Datei:

{{if:anschrift}}

     <table border=0><tr><td>{{tag.anschrift /}}</td></tr></table>

{{/if:anschrift}}

und hier die PHP Datei dazu:

if ($Anschrift) { $tpl->set(‘anschrift’, $anschrift)};

(Und das ist jetzt noch ein simples Beispiel, das kann durchaus noch weit mehr ausufern.)

Ich hab PHP in der HTML Datei ersetzt durch proprietäre Steuertags der Template Engine und in vielen Punkten den PHP Aufwand zusätzlich noch deutlich erhöht. Augenscheinlicher Sinn einer Template Engine: Programmcode aus dem HTML Template rauszuhalten, ist nicht erfüllt. Wer nur HTML kann, kommt damit auch nicht zu recht, statt PHP Code muss er sich nun mit der Template Engine im Template rumschlagen. Und ob es nun viel einfacher ist, sich die teils sehr eigenwillige Funktionsweise einer Template Engine anzueignen, oder gleich PHP Code in die Datei zu schreiben, vermag ich nicht allgemeingültig zu beantworten.

Effektiv hat sich die Anzahl an Codezeilen durch den Umstieg auf die Template Engine mehr als verdoppelt. Da ist die Größe der Template Engine selber mal noch gar nicht mit eingerechnet. Dazu kommt eine messbare Verschlechterung der Performance, weil die Template Engine das Template ja auch noch parsen muss.  Der einzig verbliebe Vorteil, ist dass es nun minimal einfacher ist, ein solches HTML Template andererorts wiederzuverwerten, aber das war hier gar nicht wirklich notwendig.

Was lern ich daraus? Auch wenn es nicht schön ist, manchmal ist der direkte Weg doch der Passendere. Und nicht alles, was sich cool aufm Papier anhört, bringt am Ende eine wirkliche Erleichterung.

No responses yet

Trackback URI | Comments RSS

Kommentar dazu? (Geht anonym und ganz ohne Anmeldung)