studyklar
IProg · Klausur 2 · Aufgabe 4

MVC mit PHP und Smarty: Ordner und Dateien für Kochrezepte

Eine Website für Kochrezepte soll nach MVC aufgebaut werden. Gefragt ist kein Code, sondern ein Plan: welche Ordner, welche Dateien, welche Methoden. Rechts steht der fertige Ordnerbaum; Schritt für Schritt ist der Teil betont, um den es gerade geht. Mit Weiter geht es voran.

Die Aufgabe

4) MVC mit PHP (9 Punkte)

Im Folgenden soll eine objektorientierte MVC Web-Anwendung auf Basis von PHP und Smarty zur Darstellung von Kochrezepten vorbildlich entwickelt werden:

  • Auf der ersten zu realisierenden Seite werden drei Rezepte des Tages (aus der Tabelle SPEISEN) dargestellt.
  • Über Pfeiltasten kann man auch zu den Tagesempfehlungen der vergangenen und zukünftigen Tage navigieren und diese anzeigen.
  • Nach Anklicken eines Gerichtes erhält man eine Beschreibung so wie eine Liste der Zutaten des Gerichtes aus der Tabelle ZUTAT angezeigt.
  • Nutzer können auch eigene Rezeptvorschläge mit den zugehörigen Zutaten erfassen.
  • Optional kann man sich auch zuerst eine Hilfe-Seite mit einer Anleitung anzeigen lassen.

Machen Sie einen sinnvollen Vorschlag für alle notwendigen:

  • Verzeichnisse
  • Dateien
  • Geben Sie für die DB-Klassen die erforderlichen Methoden mit Parametern an (nur bezogen auf die beschriebenen Aufgaben!)

Geben Sie jeweils eine kurze Beschreibung an – es ist kein Programmcode erforderlich!

Die Website hat vier Aufgaben: drei Rezepte eines Tages zeigen, zu anderen Tagen blättern, ein Gericht mit Beschreibung und Zutaten zeigen, ein eigenes Rezept speichern. Dazu kommt eine Hilfe-Seite. Die Daten liegen in zwei Tabellen, SPEISEN und ZUTAT.

MVC heißt Model, View, Controller. Das Programm wird in drei Schichten geteilt: Model (Zugriff auf die Datenbank), View (Anzeige als HTML) und Controller (nimmt Anfragen an und steuert). Smarty ist eine Template-Engine: Die Seiten sind Vorlagen mit Platzhaltern, die der Controller mit Daten füllt.

Gesucht sind Ordner, Dateien und die Methoden der Datenbank-Klassen, je mit einer kurzen Beschreibung. Es gibt 9 Punkte.

Merke: Jede Datei hat genau eine Schicht. Kein SQL in einem Template, kein HTML im Controller.
  1. Die drei Schichten und wo sie liegen.
  2. Der Controller.
  3. Das Model: Verbindung, SpeisenDB, ZutatDB mit ihren Methoden.
  4. Die View: Smarty-Templates.
  5. Statische Dateien.
  6. Probe: ein Klick auf ein Gericht durch alle Schichten.

Drei Schichten, drei Orte

SchichtOrtAufgabe
Controllercontroller.phpAnfragen annehmen, steuern
Modelmodel/Zugriff auf SPEISEN und ZUTAT
Viewtemplates/Seiten als Smarty-Templates

Jede Schicht von MVC bekommt ihren eigenen Ort. Der Controller ist eine Datei im Projektordner. Die Model-Klassen kommen in einen Ordner model/, die Templates der View in einen Ordner templates/.

Warum trennen? Eine Änderung am Aussehen berührt dann nur Templates, eine neue Tabelle nur das Model. So bleibt der Code wartbar.

Aus Skript 07, Folie 15: MVC mit Templates: Views als V1.tpl, V2.tpl, …, ein Controller.php, je Tabelle eine Klasse Tab1DB.php, …

Der Controller

controller.php: Anfragen für Tagesplan (mit Datum), Detailansicht und Speichern eines Rezepts behandeln.

controller.php nimmt jede Anfrage an: Tagesplan zeigen (mit einem Datum, damit die Pfeile zu anderen Tagen führen), ein Gericht im Detail zeigen, ein neues Rezept speichern.

Er öffnet die Datenbank-Verbindung, ruft die passenden Model-Methoden auf, übergibt die Daten an Smarty und lässt das passende Template anzeigen. Selbst schreibt er kein HTML.

Gehören mehrere Änderungen zusammen, steuert er auch die Transaktion: eine Gruppe von Datenbank-Änderungen, die entweder ganz oder gar nicht gespeichert wird.

Aus Skript 07, Folie 22: Aufgaben des Controllers: Geschäftslogik, Transaktionen, DB-Verbindungen öffnen und schließen, Template-Konstrukte mit Daten füllen.
Noch 7 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 1

kochrezepte/ (Projektordner)
LegendeTeil des SchrittsDer leere Projektordner; Ordner und Dateien kommen Schritt für Schritt dazu.