studyklar
IProg · Skript 7 · Abschnitt 5

Der PHP-Controller mit Smarty

Model und Template stehen. Jetzt fehlt der Teil, der beide verbindet: der Controller. Hier steht, was er tut und wie er in PHP mit Smarty aussieht. Rechts wächst der Code Zeile für Zeile. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 07 (PHP – Architektur), Folien 22 bis 26: Aufgaben des PHP-Controllers, ein Controller auf Smarty-Basis, reguläre Ausdrücke in Smarty, Bewertung und Installation.

Die Frage des Abschnitts: Was macht der Controller einer PHP-Anwendung mit Smarty, und wie kommen die Daten aus dem Model ins Template?

So gehen wir vor:

  1. Die Aufgaben eines Controllers.
  2. Der Controller von Folie 23 Zeile für Zeile.
  3. Ein Beispiel mit regulärem Ausdruck.
  4. Installation und Bewertung, dann eine Klausurfrage.
Aus Skript 07, Folie 19: Das Template index.tpl gibt mit {foreach item=p from=$prods} eine Tabellenzeile je Produkt aus.

Was der Controller tut

Skript · PHP Controller – Aufgaben (Folie 22)
  • Implementierung der Geschäftslogik
  • Transaktionssteuerung: Öffnen und Schließen von DB-Verbindungen, Aufruf von Commit und Rollback
  • Füllen der Template-Konstrukte mit Daten

Der Controller setzt die Geschäftslogik um, also die Regeln der Anwendung. Er öffnet die Verbindung zur Datenbank und schließt sie wieder.

Er steuert die Transaktionen: Gruppen von Änderungen, die ganz oder gar nicht gespeichert werden. Am Ende ruft er Commit (endgültig speichern) oder Rollback (alles zurücknehmen) auf. Zuletzt füllt er das Template mit den Daten.

Aus Skript 07, Folie 11: Datenbankzugriffe, komplexe Logik, Ressourcen und Transaktionen gehören nicht in die View.

Gestufte Controller

ControllerAufgabe
Frontend-ControllerSteuerung der Abläufe an der Oberfläche
Backend-ControllerRealisierung der eigentlichen Geschäftslogik

In einer großen Anwendung wird ein einziger Controller unübersichtlich. Dann teilt man ihn auf, in Stufen.

Ein Frontend-Controller steuert die Abläufe an der Oberfläche: Welche Seite kommt nach welchem Klick? Ein Backend-Controller setzt die eigentliche Geschäftslogik um, etwa eine Bestellung prüfen und speichern.

Das ist ein Beispiel, keine Norm. Folie 6 teilt anders: in einen Front-Controller, der alle Anfragen annimmt, und Anwendungs-Controller für je eine Aufgabe. Folie 22 teilt nach Oberfläche und Logik.

Noch 13 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1Aufgaben des Controllers

Folie 22

Browser: Anfrage an controller.php
controller.phpöffnet und schließt die Verbindung, steuert den Ablauf
CProductDB::find_all($db)Model: liest die Produkte
Datenbank
$smarty->assign("prods", $p)übergibt die Daten an das Template
$smarty->display("index.tpl")View: füllt das Template, schickt HTML an den Browser
LegendeTeil des SchrittsDer Weg einer Anfrage durch eine Anwendung mit Smarty.