Datum: 30.01.2009
, Kategorie:
Meinungen,
PHP
Wie jeder vernünftige Anfänger habe auch ich zu Beginn meiner PHP-Karriere PHP- und HTML-Code kräftig gemischt. Das gehört ja schließlich zu guten Ton. Die Suppe löffle ich jetzt noch aus - immer wenn ich Änderungen und Erweiterungen am Schedule Organizer vornehme. Design und Business Logic sind zwar getrennt, aber nur durch Leerzeichen.
Schon früh habe ich meine Irrungen und Wirrungen erkannt und habe mich auf die nächstbeste Template-Engine gestürzt. Die konnte alles, was man braucht - Variablen, if-Bedingungen, Schleifen, Dateien einbinden.
Den Sinn von Template-Systemen (in PHP) stelle ich heute jedoch ernsthaft in Frage.
Nehmen wir zum Beispeil Smarty. Soweit ich das sehen kann, fügt Smarty keine neue Funktionalität hinzu. Stattdessen wird ein Teil der PHP-Funktionalität kopiert. Kann man sich auch sparen. Davon abgesehen erlaubt Smarty auch PHP-Code in {php} {/php}. Wozu waren Templates jetzt nochmal gut?
Template-Systeme rauben außerdem Performance (sprich: sind langsam) wenn nicht vorkompiliert und ge-cached wird. Das wiederum erfordert Schreibrechte auf einen Ordner, was wiederum eine Hürde für manchen Anwender darstellt. Unsere Support-Foren sind voll von diesem speziellen Problem.
Und dann stellt sich noch die Frage, für wen Template-Systeme eigentlich sein sollen.
Für die Entwickler wohl kaum. Viele von denen bauen genug Mist im eigentlichen Script-Code. Da können Sie in den Templates nicht mehr viel versauen.
Für Designer etwa? Das sind meist Leute, die in der Regel (X)HTML, Flash (Action Script) etc. können sollen. Aber man möchte sie nicht mit ein paar PHP-Anweisungen überfordern? Für wie dumm werden diese Leute gehalten? Wer den Template-Syntax (siehe auch Smarty) lernen kann, der kann auch PHP lernen.
Wie man übrigens an der Funktionsvielfalt der einzelnen Template-Systeme sieht, will der Anwender größtmögliche Freiheit. Warum gibt man ihm dann nicht gleich PHP.
Konsequenter Weise haben wir bei einem aktuellen Projekt, das mit dem Zend Framework arbeitet, komplett auf die Nutzung einer Template-Engine verzichtet. Bislang kamen noch keine Beschwerden.
sehr schoen, gut gelacht! ;)
d.h. ihr nutzt zwar keine template-engine mehr, aber doch templates. oder wie darf ich mir das vorstellen?
In Zeiten von Frameworks allerdings sind Template-Systeme völlig überholt und unnötig.
Klasse Artikel!
und verwendet PHP zur Darstellung. Darüber hinaus vergisst du, dass es technisch nicht mehr möglich ist, in größeren Anwendungen alle Daten einfach und übersichtlich auszugeben. Kann schon möglich sein, dass das in Anwendungen der Fall ist, die wenige Seiten haben, aber wo Prozess- und Anwendungslogic nötig wird, vereinfach es gerade für den Entwickler die Arbeit. Es erhöht die Effektivität bei der Fehlersuche und noch einiges mehr.
es geht nicht darum, das Konzept von Templates - also die Trennung von Design und Business Logic - in Frage zu stellen. Es geht darum, dass Template-Systeme wie Smarty überflüssig sind, weil sie im Prinzip nur die Funktionalität von PHP abbilden und keinen echten Mehrwert bringen.
Dass es den Code langsamer macht ist empfinde ich als "schwierigen" Einwand, denn dann wäre auch OOP schlecht und Spaghetti-Code super toll! Ich würde jedenfalls nie wieder die php-echo-Befehle im Code auf und zu machen wollen oder einfach den kompletten HTML-Code als ein echo-Befehl "flushen". Der Code ist unlesbar und extrem schlecht formatierbar. Genau dabei helfen TemplateEngines sehr finde ich und aus komischen php-html-Mischkonstrukten für Schleifen wird ein sauberer gut lesbarer Code.
Viele der TemplateEngines kümmern sich sogar automatisch um Caching. Das mag die angesprochenen "Fehler" verursachen, aber das ist doch kein Grund es zu lassen. Das wäre ja wie als wenn ich sagen würde, dass niemand mehr Autos fahren sollte, weil man dazu gewisse Voraussetzungen erfüllen muss.
Das Thema ist schon sehr alt und ich bin gerade über einen Link auf Google+ darauf gestoßen. Ich weiß nicht wie du das Thema mittlerweile siehst, denn Meinungen ändern sich ja auch mal, aber seit dem ich 2006 meine ersten Erfahrungen mit TemplateEngines gesammelt habe, hat sich meine Meinung dazu nicht mehr geändert, im Gegenteil sogar. Dank Twig habe ich mittlerweile die saubersten Templates überhaupt, sämtliche URLs sind über Routen abgedeckt so dass ich diese komplett ändern kann ohne das ich auch nur 1 Template anfassen muss und auch die CSS/JS-Dateien werden vollständig dynamisch zusammengefasst und eingebunden. Mit Twig sind sogar sinnvolle Vererbungsstrukturen möglich, die so mit einem include-Befehl in PHP keinesfalls möglich wären.
Deinen Einwand finde ich daher vollkommen verständlich, dass sie keinen echten Mehrwert bringen finde ich als Kommentar jedoch unzureichend argumentiert... Eine Programmiersprache bildet auch die notwendigen Prozesse und Befehle ab und dennoch werden sie verwendet oder? ;)
Lg,
Manuel
der Titel ist vielleicht etwas irreführend. Mir geht es hauptsächlich um den Sinn einer eigenen Template-Sprache wie Smarty. Es mag a sein, dass am Anfang der Entwicklung einer solchen Template-Sprache alles schön übersichtlich und schlank ist, aber nach und nach kommen neue Sprachelemente, die dann am Ende hoch komplex sind.
PHP eignet sich exzellent als Template-Sprache. Da muss man nichts neues mehr erfinden.