Smarty ist ein Klassensystem mit eigenem Syntax und wird zu einem beträchtlichen Anteil in Deutschland developed.
Smarty verfolgt das einfache Prinzip:
- Bilde die Inhalte per PHP und weise sie an Smarty zu
- stelle die Inhalte über Templates und Smarty dar
Das funktioniert auch einwandfrei.
Da Smarty aber einen eigenen Syntax hat, der durch Compilierung in PHP umgesetzt wird hat Smarty auch einen erheblichen Nachteil.
Im Gegensatz zu den Anfängen dieser Templateengine wird es heute so genutzt das alle Inhalte selbst praktisch Templates sind die wiederum an Smarty zugewiesene Inhalte darstellen.
Es wird also bis zu einem Punkt rekursiv verwendet.
Der Nachteil besteht darin, das die Beziehungen für einen Editor nicht mehr überschaubar werden - der muss die Prüfung vollständig Smarty überlassen , was an Inhalten die nun Templates geworden sind und neu zu compilieren wären.
Und das klappt nicht immer ! Bei starken Verschachtelungen kommt Smarty durcheinander und somit werden teils alte Inhalte gezeigt.
Damit das auch wirklich klappt wird der Editor alle bereits compilierten Templates mit der Speicherung seines veränderten Inhaltes löschen - das ist bei allen CMS die Smarty verwenden Standard und läuft automatisch mit dem Speichervorgang ab.
Das hat zur Folge das Smarty alles neu compiliert.
Aber genau das ist der schlechteste Fall und wird die Generierungszeit enorm nach oben treiben.
Die compilierten Versionen von Smarty - Templates sind PHP pur, aber aus einer normalen Seite wird daraus eine ganze Anzahl von PHP Scripten.
Sind in einem System jede Menge Autoren und vielleicht auch noch laufend dabei Inhalte zu verändern, dann kommt ein System kaum noch auf Geschwindigkeit.
Das ist der Grund warum wir uns TPLE haben einfallen lassen.
Auch hier ist das Anliegen - weise Inhalte an TPLE zu und setze sie im Lauf in das Template ein.
Aber - es ist alles PHP und das bedeutet - keinerlei Compilierung und immer live.
Unter TPLE werden die Templates zwar als PHP geschrieben aber nicht als PHP Script abgelegt, haben also keine Endung und sind damit normal nicht direkt aufrufbar.
Alle an TPLE zugewiesene Inhalte sind protected können also nur mit den Methoden von TPLE angepackt werden und nie direkt.
Plugins sind normale PHP Funktionen die man als single Script einmal ablegt.
TPLE ruft sie über seine Plugin - Funktion auf, bildet aber vorher die Parameter , welche das Plugin verarbeiten soll.
TPLE ist also immer voll dynamisch - es ist im Schnitt 2..5 mal schneller als Smarty (bezogen auf die gesamte Generierungszeit) und kann sogar im schlechtesten Smarty - Fall mehrere tausend mal schneller als Smarty sein.
Dabei gilt - je komplexer der Seitenaufbau desto unvorteilhafter ist Smarty und besser ist TPLE.
Und - es gibt keine Compilierung - das System ist somit immer gleich schnell.
TPLE verwendet PHP Syntax und deswegen ist die Anlaufzeit erheblich kürzer als bei Smarty.
Zum anderen entfallen jede Menge Modifierer und Umwege die man bei Smarty machen muss.
Zum anderen entfallen jede Menge Modifierer und Umwege die man bei Smarty machen muss.
Setzt man PHP Teile ein, dann geht das so {php} meine Scriptteile {/php} - das ist die einzige Abweichung zu PHP Standard weil es einfacher und überschaubarer ist als die PHP Tags selbst einzusetzen.
TPLE wird im Framework MinMax und in der kommenden PowerLine eingesetzt.
Einen Einblick zum Unterschied in der Nutzung kann man auf Powersoftware.org sehen. Alle Demos waren da übrigens noch vor ein paar Tagen Smarty in der Ausführung, exakt das gleiche Output liefert da nun TPLE und zwar sehr viel schneller.
Einen Einblick zum Unterschied in der Nutzung kann man auf Powersoftware.org sehen. Alle Demos waren da übrigens noch vor ein paar Tagen Smarty in der Ausführung, exakt das gleiche Output liefert da nun TPLE und zwar sehr viel schneller.
2 Kommentare:
Hier mal ein Vergleich - Fetch eines Stringtemplates das ein Array mit 10.000 x Lorem .... als Text enthält und über eine foreach Schleife auszugeben ist:
Smarty:0.079377889633179
TPLE: 0.017796993255615
Kommentar veröffentlichen