Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 10-12-2006, 14:17
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

Meiner Meinung nach sollte eine Template-Engine auf jeden Fall die Möglichkeit bieten Variablen zu ersetzen.

Weitere sinnvolle Sachen:
- Blöcke (genre auch verschachtelt)
- Andere Templates einbinden (include)
- ...

Meine Template-Engine bietet in der Grundversion lediglich die Möglichkeit Variablen zu ersetzen, inklusive der Möglichkeit diese bei der Ausgabe zu modifizieren, die Modifikatoren selbst gehören nicht dazu.

Darüberhinaus ist sie recht einfach erweiterbar.

Prinzip:
Code:
Hallo {var1}
wird ersetzt zu
PHP-Code:
return 'Hallo '.$data['var_1']; 
Code:
Hallo {var1 uppercase}
wird nicht kompiliert, es sei denn, es gibt eine Datei namens name_und_version_der_engine_modifier.uppercase.php, dann wird es ersetzt zu
PHP-Code:
return 'Hallo '.präfix_modifier_uppercase($data['var_1'], $class_instance); 
Bei Blöcken, Includes, ... gilt genau das gleiche Prinzip:
Code:
<h1>Alle Benutzer</h1>
{loop $all_user}
{if _first}<ul>{endif}
  <li>{user.name}</li>
{if _last}<ul>{endif}{endloop}
Wird nur dann kompiliert, wenn die Dateien ...command.loop.php, ...command.if.php, ...var.first.php und ...var.last.php vorhanden sind, da dort die Logik zum Generieren eines Blocks, für die if-Abfrage als solche und für die speziellen Variablen _first und _last enthalten sind.

Ich denke, dass ist vom Ansatz her gut, da ich eine relativ schlanke Basisklasse habe, die nur das nötigste (Variablenersetzung) bietet, alles andere, was ich ggf. noch brauche, wird durch entsprechende Extensions hinzugefügt und wirklich nur bei Bedarf beim Kompilieren geladen.
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten