Sto imparando PHP e trovato alcuni comportamenti sorprendente quando stavo cercando di capire perché un costruttore non è stato sempre chiamato.Posso forzare una classe figlia a utilizzare il costruttore genitore?
<?php
class Shape {
function __construct() {
echo 'Shape.';
}
}
class Triangle extends Shape {
function __construct() {
echo 'Triangle';
}
}
$tri = new Triangle();
?>
Sono abituato a java, quindi ho pensato che avrebbe prodotto "Shape. Triangle". Sorprendentemente, emette solo "Triangolo". Ho cercato per il problema ea quanto pare posso genere di sorta risolvere il problema mettendo parent::__construct();
nella classe bambino, ma che non sembra l'ideale. C'è qualcosa che posso fare alla classe Shape per assicurarmi che le classi figlio chiamino sempre il costruttore genitore? Devo davvero scrivere parent::__construct();
nella classe di ogni bambino ogni volta che il genitore ha un costruttore?
Sono abbastanza sicuro che si deve, a meno che non si definisce il costruttore bambino. –
possibile duplicato del [è il costruttore della superclasse eseguito all'interno costruttore bambino in PHP?] (Http://stackoverflow.com/questions/738571/is-superclasss-constructor-run-inside-child-constructor-in-php) – outis