Ich habe ja schon lange keinen Eintrag mehr geschrieben, daher wollte ich das zumindest heute mal besser machen.
Heute mein Thema: Die Smarty Template Engine für PHP.
Ich habe Smarty jetzt schon bei mehreren Projekten benutzt und irgendwie doch immer mit einem lachenden und einem weinenden Auge.
Gut ist sicher die Trennung nach MVC. Auch zu loben ist eigentlich die Idee, die View-Ebene möglichst schlank zu halten und nur die nötigsten (aber speziell dafür sinnvolle) Funktionen zur Verfügung zu stellen.
Dennoch würde ich mich in Zukunft eher gegen die Template Engine entscheiden. Die Gründe dafür sind die Folgenden:
- Eigene Sprache (wieder was zu lernen & nachzuschlagen)
- Sprachaufbau teilweise schlecht durchdacht & inkonsistent (Habt ihr schon einmal versucht damit durch ein tiefer verschachteltes Hash mit variablen Schlüsseln zu traversieren? Greetings from Hell!)
- Eigener Compiler (braucht Leistung, Caching hilft aber warum??)
- Keine Rekursion (Einer der schwersten Gründe... eine Sprache ohne Rekursion ist einfach schlecht... lieber eine viel einfachere mit Rekursion... Okay, die Smarty-Profis werden wissen, man kann Rekursion über Umwege umsetzen, aber es ist doch eher Quälerei. Einfachstes Anwendungsbeispiel: Menübaum??)
- Bindung an die Template Engine durch die Sprache
Gut ist letztendlich aber die Verwendung einer eigenen Variablenebene -> Man weist Variablen für den View zu und kann diese dann dort nutzen.
Diese Technik macht einfach Sinn und wird so auch vom Zend MVC - View verwendet.
Genau dieses Tool gefällt mit mittlerweile auch viel besser. Mit ein bisschen Selbstdisziplin kann man damit sauber arbeiten, aber ohne eingeschränkt zu sein, Performanceverluste durch weitere Ebenen zu haben oder Workarounds basteln zu müssen!
Und mal ganz ehrlich... für guten und schlanken Code ist immer noch der Entwickler zuständig!
Eine Sprache, die ihn dabei einschränkt ist zunächst eine gute Idee, kann aber auch in eine fiese Sackgasse führen. Da sind andere Dinge wie Lesbarkeit (siehe Python) und Co wichtiger!
Also... nachdenken bevor man codet und den View schlank halten, dann klappts auch mit reinen PHP-Views!
Spaß hat man damit länger.