Родительский конструктор должен вызываться только из дочернего конструктора.
Если у дочернего класса нет собственного конструктора, родительский конструктор вызывается автоматически (как в вашем случае).
Если дочерний класс имеет свой собственный конструктор и не вызывает внутри родительского конструктора, отображается предупреждение Parent Constructor is Not Called
.Вы должны явно вызвать родительский конструктор в дочернем конструкторе.Некоторые языки делают это неявно (например, C #), но PHP этого не делает.Java даже заставляет вас вызывать родительский конструктор в первой строке дочернего конструктора.
Посмотрите на эти 2 примера ниже:
class P {
function __construct() {
echo 'P';
}
}
class C extends P {
// this child class doesn't have it's own constructor, so the parent constructor is called automatically
}
class D extends P {
// this class has it's own constructor, so you must explicitly call the parent constructor inside of it
function __construct() {
parent::__construct();
echo 'D';
}
}
$c = new C; // outputs P
$d = new D; // outputs PD