Lektion 3:
Einführung in die objektorierntierte Programmierung Seite 37

1. Frage
Was ist in der Objektorientierung ein Objekt?
Ein Objekt in der Programmierung (auch Instanz genannt) ist vergleichbar mit den greifbaren Obfekten bzw. Gegenständen der realen Welt. Jedes Objekt gehört zu einer bestimmten Objektgruooe und verfügt über eine bestimmte Anzahl von Eigenschaften, die bei allen Objekten einer Gruppe vorhanden sind. Im Gegedn satz zur rwalen Welt liegt jedoch keine Betonung auf greifbar, d.h. auch die Gruppen Flüssigkeiten, Gas und Lebewesen sind nicht ausgeschlossen.
2. Frage
Was ist eine Klasse?
Bei dem Begriff Klasse handelt es sich um den aus dem englischen abgeleiteten Fachbegriff für eine Objektgruppe. Sie stellt eine Art Bauplan bei der Instanziierung von Objekten dar.
3. Frage
Was sind Attribute?
Attribute sind die Eigenschaften, die ein Objekt hat bzw. haben kann. Sie weden im Normalfall in der Klasse definiert und mit einem Standardwert befüllt.
4. Frage
Wie können Sie in PHP aus einer Klasse ein Objekt instanzieren?
Dies geht beispielweise, in dem man das Schlüsselwort new und den Namen der Klasse verweendet und das Ergebnis einer Variablen zuweist: $sparbuch = new Konto(),
5. Frage
Auf was bezieht sich sie die Variable $this?
Auf das aktuelle Objekt, in dem man sich gerade befindet. Wann immer man in einer Klasse auf Attribut oder Methode einer Instanz dieser Klasse zugreifgen will, muss man die spezielle Variable $this verwenden.
6. Frage
Was unterscheidet Methoden von Funktionen?
Methoden werden in Klassen definiert und sind an deren Instanzen gebunden. Methoden können über das Schlüsselwaort $this auf die Attribute und ansdere Methoden einer Instanz zugreifen. Ansonsten verhalten sie sich wie Funktionen.
7. Frage
Wie können Sie eine Methode eines Objektes aufrufen?
Dies geht mit der Schreibweise $objekt->nameDerMethode(), wobei $objekt eine Variable sein muss, in der einen Instanz der gewünschten Klasse abgelegt ist.

Lektion 4:
Getter- und Setter-Methoden Seite 46

1. Frage
Was unterscheidet Getter- und Setter-Methoden von normalen Methoden?
Technisch gesehen sind es ganz normale Methoden, also nichts.
2. Frage
Warum ist ihr Code besser wartbar, wenn Sie Attribute über Methoden verändern statt direkt?
Weil man auf diese Weise in das Ändern des Attributs eingreifen kann, um den Wert zu prüfen oder zu ändern, ohne dass man davon außen etwas bemerkt.
3. Frage
Wie können Sie auf ein Attribut nur lesenden Zugriff erlauben?
Man makiert das Attribut als protected und schreibt nur einen Getter.

Lektion 5:
Arbeiten mit Objekten Seite 54

1. Frage
Wie können Sie eine Methode desselben Objektes von einer anderen Methode aus aufrufen?
$this->methodenName()
2. Frage
Können Sie Objekte in der Session speichern?
Ja
3. Frage
Was testet der Operator instanceof ?
Er testet, ob eine Variable ein Objekt enthält, das aus einer bestimmten Klasse erzeugt wurde. Der Code $test instanceof TestKlasse überprüft beispielweise, ob in $test eine Instanze von TestKlasse abgelegt ist.

Lektion 6:
Virtuelle Attribute Seite 57

1. Frage
Was unterscheidet virtuelle Attributte von echten Attribute?
Virtuelle Attribute sind nicht ausdrücklich in der Klasse definiert. Sie verfügen aber über Getter und Setter, die deren Existenz vorgaukeln.
2. Frage
Unter welchen Umständen sind virtuelle Attribute nützlich?
Wenn man mehrere Attribute zur Verfügung stellen will, die sich aber aus einer einzigen Datenquelle ableiten lassen.
3. Frage
Was ist bei Settern von virtuellen Attributen zu beachten?
Diese Setter verändern nicht die virtuellen, sondern echte Attribute, die selbst ebenfalls Setter haben. Man muss dafür sorgen, dass sich diese Setter nicht in die Quere kommen.

Lektion 7:
Magische Methoden Seite 68

1. Frage
Was versteht man unter magic method?
Magische Methoden sind Methoden, die von PHP automatisch aufgerufen werden, wenn ein vordefiniertes Ereignis eintritt. Sie haben genau festgelegte Namen.
2. Frage
Wann wird die Methode __toString() eines Objektes aufgerufen?
Sobald man ein Objekt als String behandelt, also z.B. versucht, es mit echo auszugeben.
3. Frage
Wann wird die Methode __construct() eines Objektes aufgerufen?
Jedes Mal, wenn ein Objekt erzeugt wird.
4. Frage
Benötigt jede Klasse eine Koknstruktor-Methode?
Es ist keine zwingende Vorraussetzung. Wenn es nichts für einen Kondtruktor zu tun gibt, kann man ihn selbstverständlich weglassen.
5. Frage
Sie haben ein Person-Objekt in der Variable $person und möchten dessen Inhalt als Test verwenden. Was müssen Sie aufrufen?
echo $person oder $person->__toString()

Lektion 8:
Beziehungen zwischen Objekten Seite 72

1. Frage
Wie können Sie ein Objekt in einem anderen Objekt ablegen?
Indem das innere Objekt als Attribut des anderen Objekts abgelegt wird.
2. Frage
Wie können Sie auf die Attribute des innen abgelegten Objekts zugreifen?
Über virtuelle Attribute, die auf die Attribute des inneren Objektes zugreifen.
3. Frage
Warum sollten Sie Bevorzugt ganze Objekte als Parameter an Methoden übergeben?
Es macht den code robuster gegen Änderungen, da man weniger Informationen über die eigenen Klassen nach außen dringen lässt.

Lektion 9:
MVC Model-View-Controller Seite 87

Zusammenfassung

MVC führt eine Aufteilung des PHP-Codes in drei Layer ein. Es gibt je ein Layer für die Modelle (z.B. Datenklassen und Validator-Klassen), für den oder die Controller (koordinieren die Reaktionen auf einen Request) und für die Views (bei uns erfolgt die Präsentation der angeforderten Daten mittels HTML-Templates). Durch diese Teilung werden Sie gerade in größeren Projekten weit besser den Überblick behalten und Ihren Code besser erweitern und warten können.
  • Model
  • View
  • Controller
MVC mit PHP
MVC und PHP – Kurz und knackig erklärt
[PHP] MVC Tutorial auf Basis eines Gästebuchs (OOP)
A Beginner's Guide To MVC For The Web
1. Frage
Auf welche Sprachelemente sollte sich der PHP-Code in Template beschränken?
Nach Möglichkeit auf echo, Schleifen und if-else-Anweisungen.
2. Frage
Warum sollten Sie so wenig PHP wie möglich in Templates verwenden?
Um soweit wie möglich HTML- von PHP-Code zu trennen. Auf diese Weise ist der PHP-Teil übersichtlicher und der HTML-Teil kann leichter von Web-Designern ohne PHP-Kenntnisse angepasst werden.
3. Frage
Welche Aufgabe hat der Controller?
Ein Controller entscheidet auf Basis des aktuellen Request, welche Aktion ausgeführt (z.B. welche Modelle hierfür benötigt oder verändert werden müssen) und welches Template zur Anzeige verwendet werden soll.
4. Frage
Wie kann der Controller entscheiden, welche Aktion er ausführen soll?
Über die Parameter, der beispielweise beim Aufruf einer Seite in der URL übergeben und in PHP ausgelesen bzw. ausgewertet wird (bei uns $_GET['action']).
5. Frage
Warum sollte es eine Standard-Aktion geben?
Falls kein Parameter übergeben wurde, sollte trotzdem eine Aktion ausgeführt weden.