Ankündigung

Einklappen
Keine Ankündigung bisher.

26: Eine Frage der Schablone

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 26: Eine Frage der Schablone

    26:
    Diskussionen über TempIate-Engines fehlen in keiner Kalender-Woche im PHP.de-Forum. Warum also soll das Thema im Advents-Kalender ausgespart werden? Richtig: es gibt keinen Grund!

    Setzen wir uns also zunächst mit den Vorteilen von Template-Engines auseinander. Sie bieten:
    • Trennung von Code und Design oder Trennung von (Business-)Logik und Präsentation.
    • Bessere Zusammenarbeit von Designer und Entwickler.
    • Möglichkeit wiederverwendbare Elemente zu definieren.

    Das alles scheint sehr verlockend, doch es werden immer wieder eine Reihe von Nachteilen genannt:
    • Großer Overhead.
    • Designer müssen erst Template-Sprache erlernen.
    • Trennung von (Business-)Logik und Präsentation nur eingeschränkt möglich.

    In der Tat ist es so, dass Template-Engines als solche keine echte Hilfestellung für die genannten Vorteile sind. Der Grund? Für kleine und überschaubare Applikationen wird ein nicht zu unterschätzender Overhead an Code eingeführt und für komplexe Projekte sind die Möglichkeiten von Template-Engines nicht ausreichend.

    Auch das Thema Performance wird oft als Nachteil einer Template-Engine aufgeführt. Hier ist jedoch dagegen zu halten, dass jede Art von Abstraktion in einer Software einen gewissen Anteil an Performance-Nachteil mit sich bringt. Dies soll in der Betrachtung daher keinen Rolle spielen - schließlich gibt es ja Caching!

    Im Kontext von komplexen Applikationen finden sich Template-Engines üblicherweise in der Präsentations-Schicht wieder. Hier sollen sie - vielleicht sogar in der Implementierung des MVC-Pattern - zur Trennung von Logik und Präsentation eingesetzt werden. Doch gerade dort versagen tragen die Konzepte von Template-Engines zum Misserfolg bei:
    • Explizite Logik wird nur zu gerne in Templates angesiedelt (if & Co.) und führt von der Wiederverwendbarkeit weg.
    • Die Erweiterbarkeit von Tags zur Implementierung von Wiederverwendbaren GUI-Elementen ist nicht gegeben.
    • Das Zusammenspiel mit GUI-Pattern - wie dem MVC - ist nicht vorgesehen.
    • Häufige Aufgaben wie Formular-Definition oder Auslagerung von Template-Fragmenten wird nicht oder nur mäßig unterstützt.

    Soll das wieder nur eine - vielleicht sogar religiös angehauchte - Aufzählung von Vor- und Nachteilen sein? Keinesfalls! Es gibt schließlich noch ein Fazit:

    Template-Engines eignen sich in kleineren Projekten für den Beginn von Trennung von Ausgabe und Code. In größeren und komplexen Projekten sollte jedoch mehr Augenmerk auf die Architektur der Software selbst gelegt werden, denn zuerst nach einer geeigneten Template-Engine Ausschau zu halten.
    Kleine Anwendungen sind meist überschaubar und der Einsatz von Template-Engines verbessert die Code-Struktur, in größeren und komplexeren Anwendungen ist die starre Struktur und eingeschränkte Funktion mehr Hindernis, denn Hilfestellung.

    Euer Nikolaus


  • #2
    Ergänzend gibt es hier noch ein paar Links:
    http://www.php.de/php-einsteiger/622...tml#post476174
    robo47.net - Blog, Codeschnipsel und mehr
    | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

    Kommentar

    Lädt...
    X