Mailinglisten-Archive |
> Jetzt Du ;) Ach - darauf habe ich eigentlich gar keine grosse Lust. :-) Statt dessen moechte ich lieber ein wenig die Entstehung dieser Library skizzieren, vielleicht wird damit einiges klarer. Meine PHP-Zeit begann im Fruehjahr 1998. Es folgten neben der Einrichtung dieser Mailingliste und ein wenig spaeter des PHP-Centers etliche Programme, kleinere und groessere Skripte. Im Rahmen der Programmierung einer groesseren Anwendung wurden verschiedene und leicht anpassbare Designs benoetigt, das war ungefaehr Anfang 2000. Wir entschieden uns fuer ein Template-System, und da jene zu dieser Zeit noch rar gesaet waren, benutzen wir die damals bereits erprobte und vielfach eingesetzte Template-Klasse der PHPLIB. Dummerweise kam ich mit den vielen Handles, der Reihenfolge derselben und ueberhaupt dem ganzen Drumherum nicht sonderlich gut zurecht. Wagner wurde dann unser Template-Spezialist. ;-) Bis vor wenigen Monaten schob ich das Thema Templates daher immer wieder beiseite, experimentierte lieber mit XML & Co., und inzwischen wurden viele weitere Template-Klassen bzw. -Libraries neu geschrieben oder erweitert, darunter natuerlich auch Smarty, oder auch Ulfs IT/IT[x], um nur die wichtigsten zu nennen. Nun kam ich jedoch im Rahmen eines Projektes wieder mit Templates in Kontakt, dabei handelte es sich um einen Teil einer umfassenden, intern benutzten PHP-Klassenbibliothek. Jene Template-Klasse liess sich ploetzlich sehr leicht anwenden, und weckte damit mein Interesse. Danach forschte ich im Netz nach den aktuell verfuegbaren Template-Klassen, um herauszufinden, ob es bereits aehnliche Ansaetze gab. Zumindest kurz angeschaut habe ich: - freeTemplate - php_templates - FastTemplate 1.1.0 - class.FastTemplate - Template-Klasse aus vLIB - TemplatePower - Smarty - SimpleTemplate - Simple Template - XTemplate - Quick Template - PHPLIB Template - ecTemplate - AvantTemplate - IT / IT[x] - ...und noch etwa fuenf weitere, die da so herumschwirrten... Darunter fand sich jedoch nichts, was die Leichtigkeit, Einfachheit und gleichzeitig Maechtigkeit hatte, die mir vorschwebte. Schliesslich sollte man einen guten Grund haben, angesichts dieser Masse an Template-Klassen eine neue zu entwickeln. Die Template Klasse sollte in der Tradition der bekannten und etablierten Libraries wie der PHPLIB Templates oder auch Ulfs IT stehen. Das heisst, sie muss sowohl einfache Ersetzungen als auch verschachtelte Bloecke beherrschen. Ebenfalls sollte sich die Geschwindigkeit in etwa an den vorhandenen Klassen orientieren, im besten Falle diese sogar uebertreffen. Einschub: Ich habe Geschwindigkeitstests durchgefuehrt, und zwar anhand derjenigen, die Ulf Wendel in seinem Artikel ueber Templates benutzt hat (http://www.ulf-wendel.de/projekte/itx/vergleich.php). Die Referenz war Ulfs IT-Klasse, jene kam auf die 100%. Die Ergebnisse fuer Apolda Template lagen auf dem gleichen Niveau wie PHPLIB Template, ich kam auf ca. 116%. In einem anderen Test wurden einfach eine grosse Anzahl Ersetzungen durchgefuehrt, dabei kam Apolda Template auf ca. 87%, wieder bei der Referenz IT mit 100%. Damit war ich letztlich zufrieden, weitere Verbesserungen erhoffe ich mir durch PHP5 bzw. ZE2. Einschub Ende. Tja, und so war Apolda Template geboren. :-) Warum nun nicht Smarty oder aehnliche? Ganz einfach: Ich halte es nach wie vor fuer Unfug, Programmlogik, die eigentlich gerade durch den Einsatz von Template aus der HTML-Ebene heraus gehalten werden soll, nun durch die Verwendung einer Template-Klasse, in der sich quasi wieder programmieren laesst, wieder in die HTML- bzw. Design-Ebene hereinzuholen. Wir erinnern uns: PHP ist einer serverseitige, in HTML eingebettete Programmiersprache. Ok. Also kann der Designer, der ein wenig PHP beherrscht, dies innerhalb von HTML verwenden. Das soll er aber nicht, also werden Templates verwendet. Der Programmierer programmiert PHP, die Designerin kreiert HTML. Dank der Template-Klasse wird nun beides bei der Ausgabe zusammengefuegt. Jeder arbeitet in seinem Bereich. Nun geben Template-Klassen wie Smarty dem Designer ploetzlich wieder die Moeglichkeit, quasi durch die Hintertuer doch ein wenig zu programmieren. Und die Programmiererin wundert sich evtl. ueber die seltsame Ausgabe, die von ihr doch voellig anders vorgesehen war... Ich denke - entweder man entscheidet sich fuer Templates, dann eben mit der Konsequenz, dass Design und Code vollkommen getrennt ist. Oder man kann sich das ganze gleich sparen, und PHP in HTML einbetten, so wie es vom Autor irgendwann mal gedacht war. Aber warum sollte man eine (kleine) Programmiersprache in die HTML-Ebene einbauen, welche dann nur durch Tricks wie Caching oder Vorkompilieren wieder halbwegs performant gemacht werden kann..? Erscheint mir einfach unlogisch. Hier beziehe ich mich vor allem auf Schleifen, if-Abfragen und so weiter. Du meinst, dass der Ansatz von PHPLIB Template, IT/IT[x], etlichen der oben genannten sowie auch Apolda Template nicht funktioniert? Das erklaer' mal den vielen Anwendern jener Template-Klassen, die seit Jahren (Apolda Template hier ausgenommen) mit deren Hilfe ihre Projekte realisieren... ;-) Ich behaupte gar nicht, dass Apolda Template irgend etwas Besonderes ist. Es handelt sich um eine pragmatische Loesung fuer einfache Probleme. _Ich_ komme gut mit der Denkweise, Bloecke in Objektinstanzen zu verwalten, zurecht - und zwar besser als mit den bis dato vorhandenen Template-Klassen. Manch anderen ergeht es aehnlich, wie die bisherigen Rueckmeldungen verlauten lassen. Es hat letztlich auch Spass gemacht, die paar Codezeilen zu schreiben und das Ergebnis zu veroeffentlichen. Vielleicht wird es weitere, von der Apolda Template Klasse abgeleitete Klassen geben (seit kurzem ist dies sogar sehr wahrscheinlich), welche maechtiger sind und zusaetzliche Features anbieten. Moeglicherweise auch Funktionalitaeten wie sie Smarty o.ae. besitzen, einbinden. Von mir aus - gerne. Der Code steht unter LGPL zur Verfuegung, ich bin auch bereit, hier weiterhin als Maintainer zu fungieren. Nur die Basisklasse sollte jedoch klein und ueberschaubar bleiben, also aehnlich wie sie momentan ist. Ach ja: Letzte Woche schrieb mir jemand, dass er Apolda Template auf Perl portiert habe und das Ergebnis bald veroeffentlichen wolle. Die Entwicklung geht also weiter, selbst abseits von PHP. Und ich freue mich darauf. :-) Danke fuers Lesen und Entschuldigung fuer die gewaltige Laenge dieser Mail... Beste Gruesse, Ralf -- : www : http://www.bttr.org : mail: ralf_(at)_bttr.org : Eine Site rund um MySQL : http://www.bttr.org/mysql/ : Privacy now! My Public Key : http://www.bttr.org/geschke.asc
php::bar PHP Wiki - Listenarchive