Estoy aprendiendo PHP y encontré un comportamiento sorprendente cuando estaba tratando de descubrir por qué no se llamaba a un constructor.¿Puedo forzar a una clase secundaria a usar el constructor padre?
<?php
class Shape {
function __construct() {
echo 'Shape.';
}
}
class Triangle extends Shape {
function __construct() {
echo 'Triangle';
}
}
$tri = new Triangle();
?>
I'm a java, así que pensé que esto daría como resultado "Shape. Triangle". Sorprendentemente, solo muestra "Triangle". Busqué el problema y aparentemente puedo arreglarlo poniendo parent::__construct();
en la clase secundaria, pero eso no parece ideal. ¿Hay algo que pueda hacer en la clase Shape para garantizar que las clases secundarias siempre llamen al constructor padre? ¿Realmente tengo que escribir parent::__construct();
en la clase de cada niño cuando el padre tiene un constructor?
Estoy bastante seguro de que tiene que hacerlo, a menos que no defina el constructor hijo. –
posible duplicado de [¿El constructor de Superclass se ejecuta dentro del constructor hijo en PHP?] (Http://stackoverflow.com/questions/738571/is-superclasss-constructor-run-inside-child-constructor-in-php) – outis