dedlfix: Klassenvariablen initialisieren

Beitrag lesen

echo $begrüßung;

Parse error: syntax error, unexpected T_NEW, expecting ')' in C:\temp\test.php on line 7

Kann dazu auch nur sagen:

Lies dir doch mal den Eintrag im Manual zu »new« durch. Das dürfte deine Frage beantworten:
»To create an instance of an object, a new object must be created and assigned to a variable.«

Nein, das ist nicht der Grund. Und das wurde ja auch schon durch den zweiten Versuch widerlegt.

Der einzige Unterschied ist, dass hier die Zuweisung im Konstruktor erfolgt.

Damit kommen wir schon der Sache näher.

Der Grund für die Fehlermeldung ist, dass zur Default-Initialisierung von Klassenvariablen nur konstante Ausdrücke verwendet werden können. Das Erzeugen eines neuen Objekts ist kein solcher. Jede Objektinstanz von B soll ja eine eigene, neue Instanz von A erhalten.[*] Dafür ist der Konstruktor vorgesehen.

echo "$verabschiedung $name";

[*] Wenn das natürlich nicht gewünscht ist, wäre das Singleton-Muster angebracht.