Was ist Smarty?

Smarty ist eine freie (unter der LGPL veröffentlichte) Template-Engine für PHP. Sie wurde mit dem Ziel entworfen, bei der Entwicklung von Webapplikationen die Trennung von Code und Ausgabe zu ermöglichen. Dies ist vor allem wünschenswert, wenn der Applikationsentwickler nicht die selbe Person ist wie der Designer.

Geschichte

Mit der Intention, eine vereinfachte Form von PHP für Designer zu erschaffen, erstellten die Entwickler Monte Orth und Andrei Zmievski 1999 die Spezifikation für eine Template-Engine, welche anschließend in der Hoffnung, dass sie Eingang in PHP finden würde, in C programmiert wurde. Das Projekt wurde jedoch aus verschiedenen Gründen nicht in den PHP Kern integriert. Grund dafür waren technische Schwierigkeiten, eine unklare Spezifikation über den Leistungsumfang.

Konzept

Der Hersteller bezeichnet Smarty als „Template/Presentation Framework“. Es soll umfangreiche Hilfsmittel zum Lösen vieler Probleme im Umfeld der „Präsentationsschicht“ (XHTML-Ausgabe) von Web-Applikationen zur Verfügung stellen. Mit diesem Konzept erweiterte Smarty wie viele andere Hersteller auch die Funktionen eines regulären Template-Engine-Systems.

Die Entwickler von Smarty gehen im Grundsatz davon aus, dass das reine Layout einer Webapplikation von einem „Template-Designer“ entworfen und in HTML (als Template) umgesetzt wird, während die eigentlichen Prozesse und Datenverarbeitungsroutinen von einem Programmierer in PHP entwickelt werden. Es erscheint deshalb sinnvoll, diese beiden Komponenten bereits im Entwicklungsprozess zu trennen. Zu diesem Zweck wird die Entwicklung aufgeteilt in Anwendungslogik verarbeitende PHP-Dateien, sowie in Templates, die das Grundgerüst der Ausgabe beinhalten und in einem eigenen Format vorliegen. Bei diesen Template-Dateien handelt es sich im Wesentlichen um HTML-Dateien mit mehr- oder weniger komplexen Platzhaltern, die später durch dynamische Inhalte ersetzt werden.

Um in den Templates eine gewisse Steuerbarkeit zu ermöglichen, erkennt Smarty neben den Templatevariablen einige einfache Steuerbefehle, die an die PHP-Syntax angelehnt wurden und die Formulierung von Bedingungen (if) oder Schleifen (foreach) erlauben.

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.

Smarty wurde für den professionellen Einsatz optimiert und enthält eine Art Compiler, der die Ausgabe der Smarty-Templates vorbereitet und in einem Cache speichert. Dadurch wird die Ausgabe beschleunigt.