Mailinglisten-Archive |
Andre Gemünd wrote:
> Damit hast Du vermutlich den Startschuss für eine weitere Runde der größten
> PHP-Template-Debatte gegeben.
Oh nein, das war der Kerl mit dem "Zum Glück" ;-) [SCNR]
> Es geht um folgendes, eine Template-Engine wurde zu dem Zweck entwickelt
den
> eigentlichen Inhalt ( Texte, Bilder, HTML etc. ), von der sog. Business
> Logic ( PHP, Datenbank, Bedingungen etc. ) zu _trennen_.
Smarty trennt Business-Logik/Daten von Ausgabe-Logik/Layout.
> Mehr oder minder komplexe Kontrollstrukturen innerhalb der Templates
> widersprechen diesem Zweck, eben weil ja die eigentliche Programmierung
> nichts in den Templates verloren hat.
Ansichtssache. Ich finde das Reduzieren von Templates auf das pure
Ersetzen von Platzhaltern erhöht nur den Gesamtaufwand der Entwicklung.
Auch IT[X] hat doch Kontrollstrukturen:
<!-- BEGIN form_address_error -->
{form_address_error}
<!-- END form_address_error -->
Das gleiche in Smarty:
{if $form.address.error}
{$form.address.error}
{/if}
Für Loops kann man ähnliches bringen.
> Smarty geht ja sogar so weit, das es
> eine komplette Mikro-Sprache innerhalb der Templates erlaubt (inklusive
> while's, for's, if's, arrays etc),
Es gibt {if} und {foreach/section} und die passenden {else}'n. Dass man
im Template auf Arrays zugreifen kann, vereinfacht die Programmierung,
was man schön am obigen Beispiel sehen kann:
{form_address_error} ist ein extra gebauter Platzhalter,
{$form.address.error} der Zugriff über ein Array mit allen Formulardaten.
Die beiden Beispiele kommen übrigens aus HTML_QuickForm, das ab Version
3 Renderer für Template-Engines unterstützt. Derzeit IT[X]/Sigma und
Smarty. Wen es interessiert, der schaue sich die beiden Renderer
ITStatic und ArraySmarty (Smarty im CVS) samt den Beispielen it-static
und smarty-static an. Der ITStatic-Renderer ist bei nahezu identischem
Template weitaus komplexer...
> aber genau zu diesem Zweck ist ja PHP
> entstanden. Die Frage ist ob wir eine weitere Sprache brauchen, die dann
> doch wieder in PHP geparsed wird, welches letztendlich nochmal geparsed
> wird....
Schlimmer, sie wird sogar mit PHP zu PHP-Code compiliert... ;-)
Aber im Ernst: PHP ist als Template-Engine entstanden, und hat sich zu
einer vollwertigen Programmiersprache entwickelt.
> der Ansatz von patTemplate (xslt-ähnliche tags, etc)
Sowohl patTemplate als auch XSLT bieten Kontrollstrukturen, um die
Ausgabe-Logik zu steuern.
ThS.
--
Dipl. Ing. Thomas Schulz
4bconsult - Beratung für die Baubranche
Engeldamm 22 b - 10179 Berlin
büro 030 - 27 59 16 67
fax 030 - 27 59 16 68
http://4bconsult.de
php::bar PHP Wiki - Listenarchive