Mailinglisten-Archive |
Hallo Liste, noch eine Frage zu PHP in der Version 4.1.1: Hat sich das Verhalten bezüglich Objekten verändert? Bisher war folgendes möglich: <?php class Bike { function Bike() { echo 'Constructor of class "Bike"'; } } class MountainBike extends Bike { } $mb = new MountainBike(); ?> Ruft man dieses Skript unter PHP 4.0.6 auf, so wird bei Instanziierung der "MountainBike"-Klasse automatisch der Konstruktor der parent-Klasse aufgerufen, also 'Constructor of class "Bike"' ausgegeben. Bei PHP 4.1.1 ist das Verhalten scheinbar undefiniert. Mal wird der Konstruktor aufgerufen, mal bekomme ich folgende Fehlermeldung: "Fatal error: Cannot instantiate non-existent class: mountainbike in /www/testOO.php on line 15" Abhilfe schafft nur, auch der erweiterten Klasse (MountainBike) einen Konstruktor zu verpassen, der wiederum den parent-Konstruktor aufruft: <?php class Bike { function Bike() { echo 'Constructor of class "Bike"'; } } class MountainBike extends Bike { function MountainBike() { parent::Bike(); } } $mb = new MountainBike(); ?> Weiss jemand, warum das so ist? Und wenn ja, was ich dagegen unternehmen kann? Wenn irgendwie möglich, möchte ich die (vielen) in meinem Projekt betroffenen Skripte nicht umstricken. Erstmal scheue ich den Aufwand, ausserdem ist es nicht so elegant... Danke für jede Hilfe! Arash
php::bar PHP Wiki - Listenarchive