PHP/Tutorials/Templates/Einführung
Inhaltsverzeichnis
Trennung der Zuständigkeiten
Nach dem Grundsatz der separation of concerns sollten Inhalt und Darstellung einer Webseite getrennt werden. Auch die Geschäftslogik, also der hauptsächliche PHP-Code, kann auf diese Art eigenständig verwaltet werden, indem man die Erzeugung von HTML-Code auslagert. Entweder nimmt man das HTML gänzlich aus Vorlagen-Dateien, also echten fertigen HTML-Dateien, oder verwendet spezialisierte PHP-Skripte, deren Aufgabe es ist, nach festgelegten Regeln passende Dokumentstrukturen zu bauen.
Die einfachste Form wäre, immer wiederkehrende Elemente wie den Seitenkopf, die Navigation und den Footer, als fertige Vorlage einzubinden.
Ausgabe von HTML
Prinzipiell ist es möglich, HTML-Markup mit echo() auszugeben. Allerdings führt dies schnell zu Herausforderungen beim Nesting der Anführungszeichen, es hindert Editoren am richtigen Code-Highlighting, und es ist schlecht lesbar.
Abgesehen davon verleitet es dazu, das EVA-Prinzip zu ignorieren und die Erzeugung der Daten und die Ausgabe zu vermischen.
<?php
echo '<div id="user_profile">';
echo '<h1>Profilseite für ' . $user['name'] . '</h1>';
echo '<img src = "' . $user['profile_picture'] . '" class="profile-pic">';
echo '</div>';
?>
Mit echo
werden Strings ausgegeben, die munter HTML-Tags, Textinhalt und PHP-Variablen mischen. Das dafür nötige Zeichen-Escaping wird schnell unübersichtlich und fehleranfällig.
<div id="user_profile">
<h1>Profilseite für <?=$user['name']?></h1>
<img src="<?=$user['profile_picture']?>" class="profile-pic">
</div>
Dieses Beispiel …
- ist übersichtlicher
- hat sauber eingerücktes HTML-Markup
- IDEs stellen HTML mit Syntax-Highlighting dar
- der Unterschied zwischen HTML-Markup und PHP-Code wird viel deutlicher
Im übernächsten Kapitel stellen wir Ihnen vor, wie Sie Templates mit DOM-Methoden dynamisch befüllen können und welche Vorteile dies bietet:
<div id="user_profile">
<h1>{#welcome-heading}</h1>
<img src="{$image-url}" class="profile-pic">
</div>
Trennung von Verarbeitung und Ausgabe
Deshalb sollten Sie Geschäftslogik (Verarbeitung) von Darstellungslogik (Ausgabe) trennen und ihre PHP- und HTML-Dokumente so übersichtlicher und damit wartungsfreundlicher gestalten.
Beispiele für Geschäftslogik:
- Verbindung zu einer Datenbank und Abruf von Daten
- Speichern von Dateien
- Berechnungen
- Verarbeitung von Formularen
Beispiele für Darstellungslogik:
- Tabellenzeilen abwechselnd farbig gestalten
- Formular anzeigen
- Variablen ausgeben
Fazit
Ein so strukturierter und nach Zuständigkeiten getrennter Code in mehreren Dateien …
- hat kleinere Dateigrößen
- ist aufgeräumter und übersichtlicher, sodass …
- Fehler leichter gefunden werden können
- bestimmte Teile leichter gefunden werden können, wenn man den Aufbau der Webseite kennt.
- kann im Design verändert werden ohne Rücksicht auf die Geschäftslogik