Zum Inhalt springen

Smarty

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 8. November 2006 um 21:31 Uhr durch Leberwurscht (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Template Engine Smarty ist eine quelloffene(LGPL) 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 Anfänger der PHP-Programmierung neigen dazu, operativen Programmcode (z.B. den Code für Berechnungen oder Dateioperationen) und ausgabebezogenen Programmcode (z.B. HTML-/XML-Code) innerhalb ihrer Programme zu vermischen, wodurch der Code unübersichtlich wird. Daraus resultieren lange PHP-Dateien, die viele Ausgabebefehle (echo oder printf) enthalten, die sich oft über viele Programmzeilen erstrecken. Die PHP-Programme werden dadurch schnell unübersichtlich und dadurch zunehmend schwerer wartbar. Bei der Entwicklung von Webapplikationen empfiehlt es sich Code und Ausgabe (im weiteren Text nur noch als XHTML bezeichnet) strikt voneinander zu trennen. Insbesondere bei größeren Applikationen bietet diese Maßnahme erhebliche Vorteile:

  • Code und Layout können getrennt (d.h. auch von verschiedenen Personen) parallel entwickelt werden.
  • Sowohl PHP- als auch XHTML-Code bleiben übersichtlicher als wenn sie miteinander vermischt würden.
  • Einfache Wiederverwendbarkeit des Codes (z.B. braucht man für dieselbe Applikation mit einem anderen Layout oder Context nur den XHTML-Code zu ändern).

Die oben beschriebene strikte Trennung von Programmcode (PHP-Code) und Ausgabecode (XHTML-Code) verbessert die Strukturierung der Programme und senkt die Zeit für spätere Layoutanpassungen wesentlich. Im optimalen Fall könnten Programmierer und Webdesigner sogar parallel und weitgehend unabhängig voneinander arbeiten, ohne dass der Programmierer sich mit den Untiefen von XHTML und CSS beschäftigen, oder der Webdesigner PHP lernen, und sich mit komplizierten Algorithmen herumschlagen müsste.

Smarty ist eine quelloffene PHP-Bibliothek und ermöglicht genau diese Trennung zwischen PHP-Code und XHTML-Ausgabe. Um auch in den Templates eine gewisse Steuerbarkeit zu ermöglichen, erkennt Smarty neben den Templatevariablen auch einige einfache Steuerbefehle die stark an die Syntax von PHP angelehnt wurden und die Formulierung von Bedingungen (if) oder Schleifen (foreach) erlauben.

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 stark beschleunigt.

Smarty unterliegt der LGPL (Lesser General Public License), einer Open-Source Lizenz für Programmbibliotheken, und kann dadurch beliebig erweitert und angepasst werden.

Performance

Smarty verarbeitet die Daten und Templates in zwei Schritten, was die Verarbeitungsgeschwindigkeit 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 (engl. 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 Webapplikationen kommen Datenbankaktualisierungen in der Regel meist viel seltener vor als Datenbankabfragen.

Siehe auch