echo $begrüßung;
In deiner Beschreibung gehst du sicherlich von dem aus, was .nils erreichen wollte. Aber das was stattdessen passiert stimmt teilweise nicht mit deinen Ausführungen überein.
Wann aber kann eine Zuweisung an eine Eigenschaft der Klasse fehlschlagen? Doch eigentlich nur dann, wenn die Eigenschaft nicht existiert. Dann aber würde sich PHP (mindestens bei error_reporting(E_ALL)) ohnehin mit einer Fehlermeldung melden. Ansonsten kann bei diesem Schritt nichts schiefgehen.
Eine Zuweisung an eine Eigenschaft wird immer ausgeführt. Wenn die Eigenschaft bis dahin in der aktuellen Instanz nicht existierte wird sie angelegt. Es gibt dazu auch keine Notice. Diese gibt es nur bei Lesezugriffen auf nicht vorhandene Eigenschaften (bzw. Variablen allgemein).
Was natürlich "schiefgehen" kann im Sinne der Klasse, wäre eine falsche Verzeichnisangabe. Aber Prüfungen über die Zulässigkeit des übergebenen Parameters finden in setAV() ja nicht statt, also ist alles zulässig.
Auch nicht ganz richtig. So lautete die Anweisung:
$this->arbeitsverzeichnis = $arbeitsverzeichnis or die("Konnte Arbeitsverzeichnis nicht auf $arbeitsverzeichnis setzen");
Hier wird nicht geprüft, ob die Zuweisung erfolgreich war. Vielmehr wird zuerst die Zuweisung ausgeführt, da = einen höheren Rang hat. Das Ergebnis einer Zuweisung ist immer der Wert der Zuweisung (rechtes Argument). Die Zuweisung findet also auf jeden Fall statt:
$x = 42;
$x = 0 or die("x = $x");
Das ergibt die Ausschrift: x = 0
Nun kommt der Operator "or" zur Anwendung. Ist das Ergebnis dieser Zuweisung (oder allgemeiner gesagt: ist der Audruck links vom "or" oder speziell hier: ist der Inhalt von $this->arbeitsverzeichnis nach der erfolgten Zuweisung) ein Wert, der als false interpretiert wird, kommt der Ausdruck rechts von "or" zur Ausführung. Ergibt die Zuweisung etwas, das als true interpretiert wird, ist das Ergebnis des "or"-Operators bereits eindeutig und der Ausdruck rechts davon kommt aufgrund des Kurzschlussverfahrens nicht mehr zur Ausführung.
Der Abbruch erfolgt also nur in den Fällen, in denen $arbeitsverzeichnis einen der an der verlinkten Stelle aufgeführten Werte enthält.
Ein Schritt weiter nach außen finden wir im Konstruktor der Klasse den Aufruf von setAV. Hier wird wieder kontrolliert, ob diese Methode erfolgreich aufgerufen werden konnte.
Nein, hier wird der Rückgabewert der Methode setAV() ausgewertet, der, weil nichts anderes mittels einer return-Anweisung festgelegt wurde, null ist.
function lies_in_string($datei) {
return file_get_contents($this->arbeitsverzeichnis."/".$datei);
}
$this->arbeitsverzeichnis könnte man noch mit rtrim($this->arbeitsverzeichnis, '/') und $datei mit dem ltrim-Pendant dazu behandeln, damit man nicht zu viele Verzeichnistrenner zwischen beiden hat. (Dies kann passieren, wenn jemand (außenstehendes) die Konfigurationswerte ändert und nicht darauf achtet, dass kein / am Ende bzw. Anfang angefügt werden darf.)
echo "$verabschiedung $name";