Smarty
Smarty ist eine OpenSource PHP-Bibliothek, die bei der Entwicklung von Webapplikationen die Trennung von Code und Ausgabe ermöglicht. Die Ausgabe ist dabei in der Regel HTML, kann aber jedes textbasierte Dateiformat sein, also z.B. auch XML.
Was ist Smarty?
Besonders PHP-Anfänger gewöhnen sich schnell an, Programmcode und Ausgabe in den PHP-Skripten zu vereinen. Daraus resultieren lange PHP-Dateien, welche viele Ausgabebefehle (echo oder printf) enthalten. Die Dateien werden unübersichtlich und schwer wartbar. Bei der Entwicklung von Webapplikationen empfiehlt es sich jedoch dringend, Code und Ausgabe (im weiteren Text nur noch als XHTML bezeichnet) strikt zu trennen. Insbesondere bei größeren Applikationen bietet diese Maßnahme viele Vorteile:
- Code und Layout können getrennt (d.h. auch von verschiedenen Personen) parallel entwickelt werden.
- Sowohl PHP- als auch XHTML-Code bleiben übersichtlich
- Einfache Wiederverwendbarkeit des Codes (z.B. braucht man für dieselbe Applikation mit einem anderen Layout oder Context nur den XHTML-Code zu ändern).
Smarty ist eine OpenSource PHP-Bibliothek, die es ermöglicht, genau das einfach in PHP zu erreichen. Um auch in den Templates eine gewisse Dynamik zu realisieren, enthält Smarty selber eine kleine Skriptsprache, welche das Einbinden von Bedingungen ({if}) oder Schleifen ({foreach}) erlaubt.
Historisches
Die Entwicklung an Smarty begann nach einiger Vorarbeit 2001. Die Entwickler sind Monte Ohrt und Andrei Zmievski.
Performance
Smarty verarbeitet die Daten und Templates in zwei Schritten, was die Performance massiv steigert:
- zunächst wird aus PHP- und XHTML-Code automatisch und für den Programmierer transparent eine neue PHP-Datei generiert, die sowohl XHTML als auch PHP enthält - also das, was ein Programmierer ohne Templates sonst selbst machen würde. Nur wenn sich eine PHP-Datei ändert, wird die temporäre PHP-Datei aktualisiert. Dadurch braucht das Template nicht bei jedem Seitenaufruf neu geparst werden.
- Bei Bedarf kann Smarty auch die endgültige XHTML-Ausgabe zwischenspeichern ("cachen"). Das bedeutet, dass der Webserver praktisch bei einem Zugriff eine statische XHTML-Seite liefert, was besonders bei Datenbankzugriffen in PHP eine massive Entlastung des Servers und der Datenbank bedeutet. Der Programmierer hat in dem Fall nur zu beachten, dass nach Aktualisierung der Datenbank der Cache gelöscht wird. Gerade bei Webapplikation kommen Datenbankaktualisierungen in der Regel meist viel seltener vor als Datenbankabfragen.
Test!