Moin!
Naja.
Bei Java ist das so gelöst:
Wenn der Constructor nicht als erstes einen Constructor der Super-Klasse aufruft, wird deren parameterloser Constructor aufgerufen. *)
Bei PHP ist der Konstruktor nicht dafür verantwortlich, die Instanz des Objektes zu erzeugen, sondern er wird (optional) zusätzlich NACH Erzeugung der Instanz aufgerufen. Wobei anzumerken ist: Wenn man innerhalb des Konstruktors eine Exception wirft, erhält man kein Objekt.
Die PHP-Vorgehensweise kommt mir sehr seltsam vor.
Sie ist nur genau aufgrund der oben genannten Tatsache sinnvoll: Objekte in PHP werden immer "konstruktorlos" konstruiert, wenn man keine expliziten Konstruktorfunktionen angibt.
Welchen Sinn soll es haben, daß *kein* Constructor der Super-Klasse aufgerufen wird? Das führt ggf. dazu, daß die Super-Klasse nicht initialisiert ist.
Klassen lassen sich in PHP auch ohne Konstruktor initialisieren (sofern wir beide dasselbe damit meinen): Konstante Werte lassen sich z.B. den Members der Klasse im Code zuweisen.
- Sven Rautenberg