Templates helfen bei der Trennung von Applikationslogik und Design. ezcTemplate ist eine mächtige, schnelle und effektiv erweiterbare Template-Engine, die in das Blog integriert wird.
8 Template
Mit Templates werden Vorlagen bezeichnet, in denen Platzhalter durch variable Inhalte ersetzt werden. Konsequent umgesetzt führt das zu einer strikten Trennung von Applikationslogik und Design, da aus den Templates keine Änderungen in der Applikation ausgeführt werden können. Da die Darstellungslogik, zum Beispiel bei der Anzeige von Listen, häufig über das reine Ersetzen von Platzhaltern hinausgeht, sind über die Zeit viele Template-Sprachen entstanden. Template-Sprachen sind dabei oft vollwertige Programmiersprachen, denen lediglich die Möglichkeit fehlt, direkt mit Datenhaltungssystemen zu kommunizieren. Sie greifen lediglich auf die Daten selbst zu, wobei Template-System und Datenobjekte sicher stellen müssen, dass keine ungewollten Zugriffe stattfinden.
Durch die notwendige Interpretation der Template-Sprache entsteht zwangsläufig ein zusätzlicher Aufwand bei der Ausführung. Einige Template-Systeme wie ezcTemplate umgehen dieses Problem, indem sie die Template-Sprache in eine andere Sprache, die schneller ausgeführt werden kann, konvertieren (was oft auch Kompilieren genannt wird). Im Falle von ezcTemplate wird die eigene Template-Sprache nach PHP kompiliert, sodass bei der Ausführung die Vorteile des schnellen PHP-Interpreters und von Op-Code-Cache zum Tragen kommen. Op-Code-Cache wurde bereits in Abschnitt 5.4.2, »Schnellerer Zugriff durch PHP-Arrays«, näher erläutert.
Neben der forcierten Trennung zwischen Logik und Design erfüllen Template-Sprachen noch einen weiteren Nutzen. Templates werden meistens von Designern bearbeitet, die in der Softwareentwicklung und im Umgang mit Programmiersprachen über weniger Erfahrung verfügen, und müssen daher einfach verständlich sein. Eingebetteter PHP-Code kann oft schwer lesbar sein, Template-Sprachen dagegen legen Wert auf Einfachheit und Lesbarkeit der Dokumente.
8.1 Template-Komponente 

Die Komponente implementiert ein Template-System mit einer eigenen Template-Sprache, die sich stark an der zuvor in eZ Publish verwendeten eigenen Template-Sprache orientiert, deren Syntax zum Teil an das bekannte Smarty [http://smarty.php.net ] erinnert. Die Sprache wurde mit dem Ziel entwickelt, für Designer einfach erlernbar zu sein und übliche Anwendungen durch ausdrucksstarke Konstrukte einfach und schnell formulierbar zu gestalten. Durch einen klar definierten Geltungsbereich von Variablen soll es auch unerfahrenen Entwicklern leichtfallen, die lokal verfügbaren Variablen zu erkennen.
Die Template-Komponente ermöglicht die Einbindung von Templates in Templates, ähnlich dem aus PHP bekannten Sprachkonstrukt include für PHP-Dateien. Solche eingebundenen Templates werden häufig dazu eingesetzt, einzelne Seitenelemente darzustellen, wie Formularelemente oder feste Boxen im Layout einer Seite. Besonders in der Pflege oder Modifikation von solchen bestehenden Teil-Templates war es in eZ Publish und anderen Template-Systemen oft schwer zu erkennen, welche Variablen verfügbar sind. Nur das Wissen um die lokal verfügbaren Variablen gibt jedoch Aufschluss um die mögliche Reichweite der Modifikationen und kann verhindern, dass Templates auf Inhalte zugreifen, die darzustellen oder modifizieren nicht ihre Aufgabe ist.
Im Gegensatz zu vielen anderen Template-Systemen wird die Template-Sprache bei der Verwendung eines Templates einmalig zu PHP-Code kompiliert, was die Ausführung massiv beschleunigt und den normalerweise durch die Verwendung von Template-Systemen entstehenden erhöhten Aufwand massiv reduziert. Da der PHP-Code nur bei Änderungen am Template neu erstellt werden muss, entsteht durch das Kompilieren kein Overhead.
Bislang wurden, um die bisherige Funktionalität zu visualisieren, lediglich die der View-Komponenten übergebenen Variablen über var_export() ausgegeben. Um dem Blog ein einheitliches Layout zu geben und die Ausgabe von XHTML leichter modifizierbar zu gestalten, verwenden wir nun die Sprache aus der Template-Komponente.




Ihre Meinung






