phpbar.de logo

Mailinglisten-Archive

[php] PHP 4.1.1, Vererbung+ Konstruktoren

[php] PHP 4.1.1, Vererbung+ Konstruktoren

Arash Yalpani php_(at)_phpcenter.de
Sat, 19 Jan 2002 16:37:06 +0100


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