phpbar.de logo

Mailinglisten-Archive

[pear] ITX Frage

[pear] ITX Frage

Thomas Schulz ths at 4bconsult.de
Don Mai 8 21:07:01 CEST 2003


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