studyklar
IProg · Skript 7 · Abschnitt 2

Die Modellebene: eine DB-Klasse je Tabelle

Im MVC-Modell kümmert sich das Model um alle Datenbankzugriffe. Hier steht, wie so eine Model-Klasse in PHP aussieht und nach welchen Regeln man sie baut. Rechts wächst die Klasse Zeile für Zeile. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 07 (PHP – Architektur), Folien 8 und 9: „Modellebene bei PHP“ mit der Klasse CProductDB und die Regeln für die Modellebene.

Im vorigen Abschnitt stand SQL direkt in der Seite. Jetzt soll es in eine eigene Klasse. Die Frage lautet: Wie sieht eine Klasse aus, die eine Tabelle für den Rest der Anwendung verwaltet?

So gehen wir vor:

  1. Die Klasse CProductDB von Folie 8 Zeile für Zeile aufbauen.
  2. Die Regeln von Folie 9: Klassen je Tabelle, einheitliche Namen, ORM.
  3. Eine Klausurfrage: eine neue Lesemethode schreiben.
Aus Skript 07, Folie 3: MVC teilt eine Anwendung in Model (Datenzugriff), View (Darstellung) und Controller (Steuerung).

Eine Klasse für die Tabelle product

class CProductDB {  public $productid;  public $name;

Die Tabelle product hat die Spalten productid und name. Jede Spalte wird ein Attribut der Klasse. Ein Objekt von CProductDB steht also für genau ein Produkt, eine Zeile der Tabelle.

Die Folie deutet mit „…“ weitere Spalten an. Wir bleiben bei zwei, damit der Code vollständig ist und läuft.

find_all: statisch, mit der Verbindung als Parameter

  public static function find_all($db) {

find_all soll alle Produkte liefern. Vor dem Lesen gibt es noch kein Produkt-Objekt. Darum ist die Methode static: Sie gehört zur Klasse und wird über den Klassennamen aufgerufen, CProductDB::find_all($db).

Die offene Datenbankverbindung kommt als Parameter $db herein. Die Klasse öffnet sie nicht selbst. Wer sie öffnet und schließt, entscheidet der Controller.

Aus Skript 05, Folie 19: Seit PHP 5 gibt es static-Methoden und -Attribute, ähnlich wie in Java.
Noch 12 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 1Die Klasse CProductDB

Folie 8 Zeile für Zeile

class CProductDB {  public $productid;  public $name;                }
LegendeTeil des SchrittsDer Rahmen der Klasse CProductDB; die Methoden kommen Schritt für Schritt dazu.