¿Por qué no puedo usar código como este?¿Por qué PHP no tiene un constructor predeterminado?
<?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**
Eg. Las clases de Java tienen predeterminado, no args constructor. Se puede invocar incluso si no está definido explícitamente.
El comportamiento de PHP puede causar problemas cuando no eliminamos el constructor args de la clase padre, por ejemplo. cuando pensamos que no se necesita más.
¿Alguien sabe por qué los creadores de PHP lo hicieron de esta manera?
Al lado de su pregunta, se debe mencionar que puede solucionar esto: verifique la existencia de la función antes de llamar. –
Los creadores de PHP tomaron * muchas * decisiones tontas ... –
http://www.php.net/manual/en/function.is-callable.php: if (is_callable ('parent :: __ construct')) { parent :: __ construct(); } –