studyklar
IProg · Skript 7 · Abschnitt 1

Das MVC-Modell: Model, View, Controller

Wer eine Website mit PHP baut, schreibt schnell alles in eine Datei: HTML, SQL und die Ausgabe. Hier steht, warum das Ärger macht und wie das MVC-Modell das Programm in drei Schichten teilt. Mit Weiter geht es Schritt für Schritt voran. Ein Klick auf einen Schritt springt direkt dorthin.

Worum es geht

Skript 07 (PHP – Architektur), Folien 2 bis 7: ein Beispiel ohne Architektur, das MVC-Modell, seine Ziele und Varianten, die Begriffe Front-End, Back-End und Full-Stack.

Eine kleine PHP-Seite liest Produkte aus der Datenbank und zeigt sie als Tabelle. Das klappt. Die Frage des Abschnitts lautet: Was ist daran unschön, und wie baut man es besser?

So gehen wir vor:

  1. Den Code von Folie 2 lesen und die Probleme finden.
  2. Die drei Schichten des MVC-Modells kennenlernen.
  3. Ziele, Varianten und die Begriffe Front-End und Back-End.
  4. Eine Klausurfrage dazu.
Merke: Gute Architektur heißt: Jeder Teil des Programms hat genau eine Aufgabe.

Was der Code tut

Eine Seite, ein PHP-Block: Verbindung öffnen, alle Produkte lesen, für jedes Produkt eine Tabellenzeile mit Nummer und Name ausgeben.

Zeile 5 öffnet eine Verbindung zur Datenbank. mysqli ist die PHP-Schnittstelle zu MySQL; die drei Punkte stehen für Server, Benutzer, Passwort und Datenbank.

Zeile 6 schickt die SQL-Abfrage SELECT * FROM Product: alle Spalten aller Produkte. Die Schleife in Zeile 8 holt mit fetch_assoc eine Ergebniszeile nach der anderen, als Array mit den Spaltennamen als Schlüssel. Zeile 9 und 10 geben jede Zeile als HTML-Tabellenzeile aus.

Aus Skript 06, Folie 21: $erg = $db->query($sql) führt die Abfrage aus, while ($row = $erg->fetch_assoc()) liest das Ergebnis Zeile für Zeile.

Drei Aufgaben in einer Datei

AufgabeZeilen
Aussehen (HTML)1–3, 9–10, 13
Datenzugriff (Verbindung, SQL)5–6
Ablauf (Schleife, Ausgabe)8–11

Die Datei erledigt drei ganz verschiedene Dinge. Sie legt das Aussehen fest (HTML in Zeilen 1 bis 3 und 13). Sie greift auf die Daten zu (SQL in Zeile 6). Und sie steuert den Ablauf (Schleife und Ausgabe).

In Zeile 9 steht sogar HTML mitten in einer PHP-Zeichenkette. Wer das Aussehen ändern will, muss im PHP-Code suchen.

Noch 11 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 1Das Problem

alles in einer Datei

<html><head><title>Products</title></head><body><table><?php$db = new mysqli( ... );$erg = $db->query("SELECT * FROM Product"); while ($zeile = $erg->fetch_assoc()) {  echo "<tr><td>$zeile['productid']</td>            <td>$zeile['name']</td></tr>\n";}?></table></body>
LegendeTeil des SchrittsDer Code von Folie 2: eine PHP-Seite, die eine Produktliste als Tabelle ausgibt.