PEAR-Handbuch | ||
---|---|---|
Zurück | Nach vorne |
HTML_Template_Flexy (kurz: Flexy) war ursprünglich eine eine Vereinfachung von HTML_Template_Xipe. Das Langzeit-Ziel von Flexy ist eine universale Basis-Schnittstelle für kompilierende und PHP-erzeugende Templates.
Flexy unterstützt eine Reihe von Backends (Templateformaten) und wurde entwickelt um weitere zu unterstützen. Schlüsselformate sind:
Standard - eine mächtige, token-basierte Template-Engine. Es unterstützt {Variablen_Platzhalter}, Attribute (flexy:foreach="....") und selbstdefinierte Tags <flexy:tojavascript ... >. Durch das Markup wird unmittelbar PHP-Code erzeugt. Die Templates können in WYSIWYG-HTML-Editoren ohne Probleme bearbeitet werden.
Regex - eine klassische Template-Engine die Smarty, Xipe oder Email-Templates konvertiert.
Raw - ein nicht kompilerendes Backend, mit dem Templates mit PHP erzeugt werden können. Nützlich, wenn eine Anwendung weitergegeben werden soll und die Kompilierung u.U. nicht möglich ist.
Daten können auf zwei Wegen mit Flexy zugewiesen werden, abhängig davon, welche Methode Sie bevorzugen.
Push - Sie übergeben Daten an die Template-Engine über $flexy->setData() und $flexy->setDataByRef(). Das ist vergleichbar, mit der Funktionsweise unter Smarty und ähnlicher Systeme.
Push/Pull - Sie stellen ein Objekt mit den Daten zur Verfügung (Data-Provider-Objekt), das die Daten für die Ausgabe enthält. Das hat den Vorteil, dass die Variablen im Template dokumentiert werden können, z.B. mit Hilfe von PHPDoc comments.
Trotz seiner Flexibiltät:
besitzt es immer noch eine leichtgewichtige, einfach zu lernende API
ist es schnell, da bei Standardoperationen nur wenig Code geladen wird
Wenn man sich umschaut, findet man sehr viele Templatesysteme für PHP. Sie fallen normalerweise in zwei Kategorien: Ersetzungssystem und (PHP-)Code-Erzeugungssystem.
Ersetzungsysteme sind z.B.: HTML_Template_IT, FastTemplate, PhpLib. Diese tendieren dazu langsam bei der Verarbeitung von (verschachteln) Blöcken zu sein und benötigen viel Code um jede Variable im Template zu ersetzen.
Code-Erzeugungssysteme wir Flexy, Smarty, HTML_Template_Xipe tendieren dazu besser mit komplexen Templates zurechtzukommen und sind besser erweiterbar. Das Ziel von Flexy ist es integrierten Support für alle diese PHP-Generatoren anzubieten.
Der standardmäßige Template-Kompiler benutzt einen Tokenizer, der HTML-Tags und -Attribute benutzt, um Schleifen und Bedingungen zu formulieren, und um die Elemente eines HTML-Formulares ähnlich wie bei XML_Tree zu manipulieren. Die Umwandlung erfolgt dabei nur einmal während der Template-Kompilierung.
Ein Flexy-Template wird normalerweise innerhalb einer Comntroller-Klasse aufgerufen. HTML_Template_Flexy wird dazu der Name des Templates und dem auszugebenden Objekt übergeben - jede Variable die Sie ausgeben wollen, muss darin definiert sein.
Beispiel 42-1. Anwendungsbeispiel für HTML_Template_Flexy
|
Als nächstes das Beispiel-Template:
Beispiel 42-2. Beispiel-Template für HTML_Template_Flexy
|
Und die Ausgabe:
Beispiel 42-3. Ausgabe von HTML_Template_Flexy
|
Zurück | Zum Anfang | Nach vorne |
HTML_Template_Flexy | Nach oben | Einstellungsmöglichkeiten |