5.5.7 Selbsttest Nr. 4 zu OOP in PHP

Diese Übung ist für diejenigen gedacht, denen der Übergang der einfachen Beispiele zur objektorientierten Programmierung nicht so leicht fällt. In einem Schritt-für-Schritt-Vorgehen wird ein einfaches Beispiel genommen und in mehreren Schritten in ein OOP-Beispiel umgewandelt. Dabei steht die nachvollziehbare Umwandlung im Vordergrund und nicht die "perfekte Programmierung".

Im Unterkapitel Beispiel Formulare - Daten speichern hatten wir schon ein nicht-OOP-Beispiel für ein einfaches Formular mit der Speicherung in einer Datei. Schauen Sie sich bei jedem Schritt an, was gemacht wurde.

Bitte speichern Sie dieses Beispiel nun ab und bringen Sie es auf Ihrem Webserver zum Laufen: 0Schritt-Original.zip

  1. Schritt: Nun werden die Funktionen der Datei index.php in eine Klasse "Html" ausgelagert. 1Schritt-mitKlasse.zip

  2. Schritt: Damit beide Dateien index.php und output.php in der Datei index.php zusammengefasst werden können, muss später eine if-Verzweigung erstellt werden. Daher bekommt der Button einen Namen und dieser wird nun ebenfalls per POST übermittelt. 2Schritt-ButtonBenennen.zip

  3. Schritt: Nun wird eine if-Verzweigung eingebaut, indem der Name des Buttons abgefragt wird. 3Schritt-if-eingebaut.zip

  4. Schritt: Alles was in der output.html steht, wird in die index.html übernommen. Hierzu musste die Methode closeFormAndFooter() aufgeteilt werden in writeButton() und writeFooter(). Anschließend wird der Sourcecode aus output.html in index.html kopiert und angepasst. 4Schritt-MethodenAngepasstUndOutputInIndex.zip

  5. Schritt: Nun wird abschließend der Aufruf der SPL-Klassen zum Schreiben und Lesen der Datei eingebaut. 5Schritt-SplEingebaut.zip

Aufgaben (ohne Lösung) zum Ausprobieren

Berechnen Sie mit DateTime Ihr Alter. Verwenden Sie hierzu die Methode diff(), deren Verwendung Sie sich selbst erarbeiten müssen. Genau genommen müssen Sie nur schauen, welche Rückgabe die Methode in $diff speichert und wie sie diese sinnvoll auf dem Browser ausgeben.

1
2
3
4
5
6
7
<?php
$now = new DateTime(now);
$myBirthday = new DateTime("16.03.1987");

$diff = $now->diff($myBirthday);

// Hier das Hauptprogramm ergänzen

Aufgabe

Laden Sie den Sourcecode herunter: AufgabeUML.zip

a) Zeichnen Sie das UML-Klassendiagramm.

b) Überlegen Sie sich anhand des Sourcecodes, was auf dem Browser dargestellt wird