PHP Coding Standard

Logo: PHP
18. Regel 15: Der Code muss vom Design getrennt werden (Template Engine)

Code und Design zu trennen ist eine der wichtigsten Regeln. Klassen und Funktionen unterstützen Sie darin modular zu programmieren. Wenn Sie jedoch HTML und PHP mischen, behindern Sie sich bei diesem Ansatz und ihre Skripte werden automatisch unübersichtlich. Es gibt ganz einfache Maßnahmen, wie man nur mit PHP eine Template Engine abbilden kann, ohne sich in vibTemplate oder Smarty einzuarbeiten.

Zitat von Jörg Krause ("PHP5 - Grundlagen und Profiwissen", Seite 36 und 37)
Trennen Sie Code vom Design
Die Trennung hilft, leicht beherrschbare Programmteile zu erhalten. Die Wiederverwendbarkeit des Codes wird gesteigert. Sie können mit Gestaltungswerkzeugen arbeiten, die eingeschlossenen Code nicht verstehen. In großen Teams können Sie das Design von Designern erledigen lassen und die reine Programmierarbeit Programmierern übergeben.

Zur Wiederverwendbarkeit von Design und Code
Wenn Sie etwas ändern möchten, müssen Sie es nur an einer Stelle tun. Konsistente Gestaltungsmerkmale und Bedienerführung erleichtern den Nutzern die Navigation. Behandeln Sie Design-Elemente als Komponenten, die Sie immer wieder verwenden.

Sie werden auch im Nachfolger "PHP5 - Grundlagen und Profiwissen" Textpassagen über Template Engines und die Trennung von Code und Design finden. Jörg Krause stellt hier wichtige Prinzipien der PHP-Programmierung vor:

Mit einer Template Engine sind Sie viel besser in der Lage, diesen Dingen und dem PHP Coding Standard entgegen zu kommen. Es ist ein unverzichtbarer Teil der PHP-Programmierung. Viele der mir bekannten großen Projekte trennen PHP und HTML, aber nicht alle setzen dafür eine Template Engine ein. Projekte wie das IPB lagern den HTML-Code in Funktionen aus, die dann über mehr oder weniger eindeutige Skript-Namen gefunden werden können. Ich empfehle jedoch den Einsatz einer Template Engine:

  1. Template Engine nur mit PHP
  2. vLIB: vlibTemplate, vlibDate und vlibMimeMail
  3. Smarty

Sie sollten sich vorher in Ihrem Team überlegen, welche Template Engine sie einsetzen wollen. Ich empfehle vLIB oder die "Template Engine nur mit PHP". Allerdings ist der Einsatz von Template Engines umstritten: Warum Template Engines nicht glücklich machen.

Zitat von Jörg Krause ("PHP4 - Grundlagen und Profiwissen", Seite 193)
Die saubere Trennung von HTML-Code und Skript ist für die Lesbarkeit des Quelltextes ebenfalls wichtig. Bei komplexen Anwendungen entsteht schnell ein Durcheinander von Befehlen, die auch geübten Programmierern jede Chance nehmen, eine Funktion zu erkennen oder einen Fehler zu finden.

Ich kann nicht oft genug betonen, wie wichtig sauberer und übersichtlicher Source-Code ist. Eine Template Engine wird für jede professionelle PHP-Applikation empfohlen. Template Engines sollten allerdings nicht eingesetzt werden, wenn mehrere Ausgabeformate erzeugt werden müssen. Beispiel: Datensätze aus MySQL sollen als Bild (GIF, PNG), HTML, Flash und PDF dargestellt werden können, dieses kann eine Template Engine nicht, weil sie nur Text (reiner Text, HTML, CSS, XML, LaTex, etc.) erzeugen kann.

Einige Programmierer sagen, dass MVC (Model View Controller) bevorzugt eingesetzt werden sollte. Ich bin eher dafür, den "View" mit einer Template Engine zu unterstützen, wenn die Ausgabe der Daten in HTML oder XML erfolgen soll.