Kapitel 1. Was ist Smarty? Smarty ist eine Template-Engine für PHP. Genauer gesagt erlaubt es
die einfache Trennung von Applikations-Logik und Design/Ausgabe. Dies
ist vor allem wünschenswert, wenn der Applikationsentwickler nicht
die selbe Person ist wie der Designer. Nehmen wir zum Beispiel eine
Webseite die Zeitungsartikel ausgibt. Der Titel, die Einführung,
der Author und der Inhalt selbst enthalten keine Informationen darüber
wie sie dargestellt werden sollen. Also werden sie von der Applikation
an Smarty übergeben, damit der Designer in den Templates mit einer Kombination von
HTML- und Template-Tags die Ausgabe (Tabellen, Hintergrundfarben,
Schriftgrössen, Stylesheets, etc.) gestalten kann. Falls nun die
Applikation eines Tages angepasst werden muss, ist dies für den
Designer nicht von Belang, da die Inhalte immer noch genau gleich
übergeben werden. Genauso kann der Designer die Ausgabe der
Daten beliebig verändern, ohne dass eine Änderung der
Applikation vorgenommen werden muss. Somit können der Programmierer
die Applikations-Logik und der Designer die Ausgabe frei anpassen,
ohne sich dabei in die Quere zu kommen.
Was Smarty nicht kann: Smarty versucht nicht die gesamte Logik aus dem
Template zu verbannen. Solange die verwendete Logik ausschließlich für die
Ausgabe verwendet wird, kann sie auch im Template eingebettet werden. Ein Tip:
versuchen Sie Applikations-Logik aus dem Template und Präsentations-Logik
aus der Applikation herauszuhalten. Nur so bleibt die Applikation auf absehbere Zeit
gut skalier- und wartbar.
Einer der einzigartigen Aspekte von Smarty ist die Kompilierung der
Templates. Smarty liest die Template-Dateien und generiert daraus neue
PHP-Skripte; von da an werden nur noch diese Skripte verwendet. Deshalb
müssen Templates nicht für jeden Seitenaufruf performance-intensiv
neu geparst werden und jedes Template kann voll von PHP Compiler-Cache
Lösungen profitieren.
(Zend, http://www.zend.com; PHP Accelerator, http://www.php-accelerator.co.uk)
Ein paar Smarty Charakteristiken
Sehr schnell. Sehr effizient, da der PHP-Parser die 'schmutzige' Arbeit übernimmt. Kein Overhead durch Template-Parsing, nur einmaliges kompilieren. Re-kompiliert nur gänderte Templates. Sie können die Engine um individuelle Funktionen und Variablen-Modifikatoren erweitern. Konfigurierbare Syntax für Template-Tags: Sie können {}, }, <!--{}-->, etc. verwenden. 'if/elseif/else/endif'-Konstrukte werden direkt dem PHP-Parser übergeben. Somit können {if ...} Ausdrücke sowohl sehr einfach als auch sehr komplex sein. Unbegrenzte Verschachtelung von 'section', 'if' und anderen Blöcken. Ermöglicht die direkte Einbettung von PHP-Code. (Obwohl es weder benötigt noch empfohlen wird, da die Engine einfach erweiterbar ist.) Eingebauter Caching-Support Beliebige Template-Quellen Eigene Cache-Handling Funktionen Plugin Architektur
|