PHP/Tutorials/Templates/Einführung

Aus SELFHTML-Wiki
< PHP‎ | Tutorials‎ | Templates
Wechseln zu: Navigation, Suche


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.


schlechtes Codebeispiel
<?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.


gutes Beispiel
<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:

noch besseres Beispiel
<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 …

  1. hat kleinere Dateigrößen
  2. ist aufgeräumter und übersichtlicher, sodass …
  3. Fehler leichter gefunden werden können
  4. bestimmte Teile leichter gefunden werden können, wenn man den Aufbau der Webseite kennt.
  5. kann im Design verändert werden ohne Rücksicht auf die Geschäftslogik