Template Engine

Wobei ich zum Thema Trennung von Applikations- und Darstellungslogik sagen muss, dass ich auch immer mehr dazu tendiere fast ganz auf TemplateEngines zu verzichten. PHP gibt dir alles an die Hand, was du dazu brauchst. Wieso also Umwege machen?
MfG, Andy
 
Naja du machst es im Prinzip genau wie mit PHP.
Eine Template engine macht ja im prinzip nichts anderes als deine Befehle umzuschreiben.
Z.Bsp: bei smarty wird aus:
PHP:
<?php if($lala == 1) { ?>
das hier:
Code:
{if $lala == 1}

Wie gesagt. Im Prinzip ist es nichts anderes und es geht eigentlich rein um das aussehen ;)
Smarty verwandelt das dann auch genau in das zurück, das ich oben geschrieben hab.

Ich persönlich verwende trotzdem eine Templateengine für größere Projekte. Warum ?
Weil ich es doch übersichtlicher finde.

ich hab mir eine Template Klasse geschrieben, die ich inzwischen immer verwende.
Sie besteht aus genau 2 dateien.

Beispielcode:
Code:
<div>Hallo mein name ist {$Name}</div>

parseTemp.php macht aus {$lala} bzw. {if $lala == 1} den PHP Code (wie oben genannt) und diese wird nur ausgeführt, wenn ich etwas an der Templatedatei geändert habe.
(Also nicht wie smarty, die das jedes mal ändern.)
So ist die Datei, die ich im Prinzip lade genau so eine Datei, wie wenn ich sie per Hand schreiben würde. Also auch schnell.

Die Datei sieht dann so zum Beispiel aus:
PHP:
<div>Mein Name ist <?php echo templateArray['Name']; ?></div>


Und die $temp.php beinhaltet dann einfach die Funktionen, die ich während der Laufzeit benötige.
Also
PHP:
// assign macht im prinzip nichts anderes als diesen Wert in
// das globale Template array zu speichern.

function assign($varname, $varvalue)
 {
   $this->templateArray[$varname] = $varvalue;
 }

// dann kann ich alle Variablen sehr schnell und sehr einfach dem Template hinzufügen.
$name = 'Simon';
$temp->assign('Name', $name);

Und dann hab ich noch display
PHP:
function display($file)
 {
    include('templatefolder/cached/'. $file .'.php');
 }

// und display includiert einfach die eine datei :)
  $temp->display('dastemplate.tpl');


ich hoffe du verstehst was ich meine ;)

Grüße Simon
 
Ich persoenlich find es nicht so toll irgendwelchen Code in Templates zu haben.
Das fuehrt zwangslaeufig dazu dass man entweder das Template includen oder, was noch schlimmer ist, per eval() auswerten muss.

Entsprechend gibt es solchen Kram in meiner kleinen Template-Klasse auch nicht.
 

Neue Beiträge

Zurück