Jeder kennt sie, viele verwenden sie. Die Rede ist von "Template Engines". Template Engines sollen helfen den Programmcode und das Layout zu trennen.
Der Grundgedanke Layout (View) und den Programmcode zu trennen, das ist keine schlechte Idde und dem sollte jeder Programmierer folgen. Das Template Engines überflüssig sind wissen die wenigsten. Vielmehr folgen viele den Heerscharen von Programmieren, die es ihnen vormachen. Letzendlich sind sie so, wie sie verwendet werden unnötig...
Warum sind nun Template Engines unnötig, werden sich viele Fragen. Wie gesagt Template Engines haben einen handfesten Grundgedanken, nur dieser tritt immer mehr in den Hintergrund.
Der Grund hierfür ist, das sich Template Engines immer mehr zu eigenen Programmiersprachen entwickeln. Viele sind soweit verkompliziert worden, das sie mittlerweile einen eigene Art von Interpreter besitzen. So wie beispielsweise Smarty.
Smarty ist der Uhrgestein der Template Engines in PHP. Viele benutzen es, doch ich behaupte es ist nicht nötig, da PHP selbst eine Template-Engine ist.
Folgender Code einer Template Engine sollte dies illustrieren:
Download Code!
<INCLUDE FILENAME="somefile.html">
<IF NAME="if_var">
<table>
<LOOP NAME="table_rows">
<TR>
<TD BGCOLOR="#0000FF">{column_1}</TD>
<TD BGCOLOR="#0000FF">{column_2}</TD>
<TD BGCOLOR="#0000FF">{column_3}</TD>
</TR>
</LOOP NAME="table_rows">
</table>
</IF NAME="if_var">
Nun wie könnte dies in PHP aussehen?
Download Code!
<?include("somefile.html")?>
<?if($if_var):?>
<table>
<?foreach($table_rows as $t):?>
<tr>
<td bgcolor="#0000FF"><?=$t['column_1']?></td>
<td bgcolor="#0000FF"><?=$t['column_2']?></td>
<td bgcolor="#0000FF"><?=$t['column_3']?></td>
</tr>
<?endforeach?>
</table>
<?endif?>
Warum sollte man es also komplizierter machen? Manche Leute behaupten PHP-Code in HTML -Dateien könnte den Designer verwirren.
Das mag auf unter bestimmten Gesichtspunkten seine Richtigkeit haben, nur ist es meistens so, daß Designer keine HTML Dateien anfassen. Sie arbeiten mit ihrem Photoshop, Gimp oder anderem Grafikprogramm. Sie würden also nichtmal die HTML-Templates irgendwelcher Template-Engines anfassen.
Mag es am Hype liegen, an Programmierer die nicht nachdenken, oder daran das man es halt so macht wie die anderen es machen. Meine Empfehlung ist PHP für diese Aufgaben zu nutzen. Also nicht noch einen Interpreter für eine interpretierte Sprache nutzen.
Sicherlich generieren manche Template Engines mithilfe "Cachings" auch PHP-Dateien. Nur warum so umständlich, wenns auch einfach geht?