Dlaczego nie mogę użyć takiego kodu?Dlaczego PHP nie ma domyślnego konstruktora?
<?php
class NoConstructor {
}
class ChildWithConstructor extends NoConstructor {
public function __construct() {
parent::__construct();
// do something
}
}
$foo = new ChildWithConstructor();
// **Fatal error: Cannot call constructor in file.php on line 8**
Np. Klasy Java mają domyślny, bez konstruktora args. Można go wywołać, nawet jeśli nie jest zdefiniowany jawnie.
Zachowanie PHP może powodować problemy, gdy nie usuniemy żadnego konstruktora args z klasy nadrzędnej, np. kiedy myślimy, że nie jest już potrzebna.
Czy ktoś wie, dlaczego twórcy PHP zrobili to w ten sposób?
Oprócz pytania, które należy zadać, należy wspomnieć, że można obejść to: sprawdzić funkcjonowanie przed wywołaniem. –
Twórcy PHP zrobili * wiele * niemądrych decyzji ... –
http://www.php.net/manual/en/function.is-callable.php: if (is_callable ('parent :: __ construct')) { parent :: __ construct(); } –