What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
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