que para metodos funcionamiento fichero emplea documentar configurar codigo __construct php class constructor parent-child

metodos - para configurar el funcionamiento de php se emplea el fichero



¿Se llama a los constructores principales si una clase secundaria NO define un constructor? (2)

En la documentación de PHP Constructores y Destructores se indica

Nota: los constructores principales no se llaman implícitamente si la clase secundaria define un constructor. Para ejecutar un constructor principal, se requiere una llamada a parent :: __ construct () dentro del constructor secundario.

Pero, ¿qué sucede si la clase secundaria no llama a un constructor, se seguirá llamando al constructor principal? ¿O deberíamos crear un constructor que llame al constructor padre de todos modos?

ES DECIR:

class BaseClass { function __construct() { print "In BaseClass constructor/n"; } } class SubClass extends BaseClass { function __construct() { parent::__construct(); } }


Tal vez esto fue algo obvio, pero algunos miraron a su alrededor y, sorprendentemente, no fue fácil encontrar una respuesta directa a esta pregunta, de modo que aquí está:

Si la clase secundaria NO define un constructor, se llamará al constructor principal.

En el ejemplo a continuación, $ obj seguirá llamando al constructor desde BaseClass porque SubClass nunca llamó a un constructor.

class BaseClass { function __construct() { print "In BaseClass constructor/n"; } } class SubClass extends BaseClass { //I do not have a constructor :( } $obj = new SubClass();


Tener en cuenta que un constructor es un método que se puede anular como cualquier otro método. Si la clase principal tiene un constructor, todas sus clases secundarias heredarán ese constructor. Si un hijo anula el constructor, esto se usará cuando se creen nuevos objetos y el constructor principal no se llamará implícitamente. Si el hijo no anula el constructor, se usará el constructor del padre. Este concepto se aplica a la herencia múltiple.