Smarty Template Engine - (Nur) eine gute Idee?

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.

Comments

Post new comment

The content of this field is kept private and will not be shown publicly. If you have a Gravatar account associated with the e-mail address you provide, it will be used to display your avatar.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Internal paths in single or double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or path. Paths to files in single or double quotes, written as "files:somefile.ext", for example, are replaced with the appropriate URL that can be used to download the file.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><blockquote>
  • Lines and paragraphs break automatically.
  • Pairs of<blockquote> tags will be styled as a block that indicates a quotation.
  • You can enable syntax highlighting of source code with the following tags: <c>, <cpp>, <css>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <smarty>, <xml>. The supported tag styles are: <foo>, [foo]. PHP source code can also be enclosed in <?php ... ?> or <% ... %>.
  • Textual smileys will be replaced with graphical ones.
  • Each email address will be obfuscated in a human readable fashion or (if JavaScript is enabled) replaced with a spamproof clickable link.

More information about formatting options

Type the characters you see in this picture. (verify using audio)
Type the characters you see in the picture above; if you can't read them, submit the form and a new image will be generated. Not case sensitive.