Non, le constructeur de la classe parent n'est pas appelée si l'enfant de la classe définit un constructeur.
À partir du constructeur de votre enfant de la classe, vous devez appeler le constructeur de la classe du parent :
parent::__construct();
En lui passant les paramètres, si nécessaire.
Généralement, vous allez le faire au début de l'constructeur de la classe fille, avant tout code spécifique ; ce qui signifie, dans votre cas, vous devez :
class Child extends Base {
function __construct() {
parent::__construct();
echo 'Child __construct<br/>';
}
}
Et, pour référence, vous pouvez prendre un coup d'oeil à cette page du manuel PHP : les Constructeurs et Destructeurs -- c'unis (en les citant) :
Remarque: Parent les constructeurs ne sont pas appelé implicitement que si la classe enfant
définit un constructeur.
Afin de
exécuter un constructeur parent, un appel à
parent::__construct()
dans le
enfant du constructeur est nécessaire.