Was bringt Smarty 3.0 ?

Ich gebe zu, ein wenig Kaffeesatzleserei ist es schon, zumal es zumindest offiziell nur eine Machbarkeitsanalyse von Smarty 3 gibt, aber interessant ist es dennoch. Ich habe angefangen mich für Smarty 3 zu interessieren als mir beim Lesen eines Berichtes klar wurde, das dieses mit hoher Wahrscheinlichkeit nicht abwärts kompatibel sein wird. Das liegt wahrscheinlich noch nicht einmal am PHP-Aufruf, sondern an einer geänderten Template-Sprache. Hier steht man also vor einem Problem, denn man muss nun zum einen den richtigen Zeitpunkt abpassen, um neue Anwendungen direkt in Smarty 3 zu erstellen, und zum anderen Entscheiden, ob Altanwendungen nach Smarty 3 portiert werden sollen.

Die Frage ist aber eigentlich: wieso keine Abwärtskompatibilität? Nun ja, man will die Software ja weiter entwickeln, und dazu gehört manchmal auch ein harter Einschnitt um die Sache voran zu treiben. Wobei diese Aussage auch wieder zu relativieren ist: ich habe bis jetzt noch nichts gefunden, was eine Abwärtskompatibilität zu Smarty 2 verhindern würde. Wie zu Erwarten war, ist die Version 3 ein kompletter Code Rewrite. Hier werden auch die Prämissen aus der Informatik bzgl. Compilerbau Berücksichtigung finden: es wird einen Lexer und einen Parser geben. Hierdurch ergeben sich völlig neue Möglichkeiten und es wird eine schnellere Ausführung des Codes ermöglicht. Es hört sich zwar komisch an, das ein komplexerer Code schneller ausgeführt wird, aber der Trick ist schlicht und ergreifend, dass Fehler frühzeitiger erkannt werden. Ferner werden Plugins nur noch dann geladen wenn sie gebraucht werden, und der Smarty-Core ist wirklich sehr vereinfacht.

Besonders gefällt mir an der neuen Version das Tag {nocache} mit dem ich explizit Teile eines Templates vom Caching ausschließen kann. Bisher war man auf Gedeih und Verderb dem Caching ausgeliefert und es galt: Alles oder gar nichts. Aber auch an anderer Front hat sich etwas getan: der Berechnung von Variablen innerhalb des Templates.

Durch die Rücksichtnahme auf die Prämissen des Compilerbaus kann man nun von einer richtigen Template-Sprache reden, und nicht nur von einer behelfsmäßigen Ersetzung von Tags. Und Sprachen bringen auch Funktionen mit sich. Während man sich in Smarty 2 regelmäßig mit dem {math}-Tag die Finger brach, sind in Smarty 3 Konstrukte in der Art {$x+$y} überhaupt gar kein Problem mehr. Das gleiche gilt auch für das Assign-Tag. Dieses wird zwar wahrscheinlich noch funktionieren, aber {$foo=$bar+2} funktioniert genau so gut.

Auch hat man neue Möglichkeiten gefunden Arrays anzusprechen. Statt eines {$foo.bar} geht nun auch ein PHP-konformes {$foo[bar]}. Es lassen sich auch Objekte in der Art von {$foo->bar} ansprechen. Diese Änderung sieht eigentlich nicht weltbewegend aus, aber es ermöglicht zum Beispiel direkt mit simplexml erstellte Objekte ohne weitere Konvertierung in Smarty zu verwenden.

Und weil alles so schön ist fällt {section} weg? Was? Genau! Zugegebenermaßen war der Befehl nicht schön aber zweckmäßig. Vor allem stand allein schon der Name und auch die Funktion gegen alles was man aus der PHP-Welt kannte. Entsprechend wird es auch hier eine Angleichung an PHP geben und zukünftig wird man anstatt einer {section} eine {for}-Schleife bzw. ein {foreach} verwenden. Die Programmierer versprechen zumindest das die {section} noch weiter funktionieren wird.

Also? Alles anders? Wohl nicht, stattdessen alles schneller, besser und intuitiver! Während einer schlanker und schneller Kern von Smarty für eine schnellere Ausgabe der Templates sorgen wird, wird durch eine Angleichung der Syntax an PHP die Nutzung intuitiver sein. Ich denke, man muss das Handbuch nicht mehr so oft konsolidieren, und wird schneller zu Ergebnissen kommen ohne auf das MVC-Modell verzichten zu müssen. Smarty 3 wird ein großer Schritt für die Akzeptanz von PHP im Enterprise-Bereich leisten.

Ähnliche Beiträge

10 nützliche PHP Snippets PHP ist eine fast sinnvolle Programmiersprache bei der am Ende alles immer so endet, dass man die gleichen Aufgaben immer wieder erledigen muss. Insof...
Online Entwicklungsumgebungen für PHP Nunja, ich gebe zu, der Titel ist etwas reißerisch, denn von einer richten Entwicklungsumgebung kann man wohl kaum sprechen! Dennoch sind mir in der l...
Tutorial Amazon Web Services mit PHP – II &#... Im vorherigen Teil haben wir zumindest schon einmal einen API-Key und eine Partner-ID besorgt, jetzt geht es ans Eingemachte. AWS sind ein Service, de...
Tutorial Amazon Web Services mit PHP – III &... Im vorherigen Teil haben wir eine XML von den AWS mit cURL geladen. Aber Was heißt eigentlich Funktionscaching, und wieso brauchen wir das? Ganz einfa...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.