# 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