Как обратиться к конструктору (первого) родительского класса? Здравствуйте.
В процессе дискуссии (ну, вы знаете, что в подобные моменты в голову приходят всевозможные мысли, что есть очень хорошо) возник вопрос - можно ли вызвать конструктор "первого" родительского класса при такой иерархии наследования:class Prnt {
public function __construct() {
echo 'In Prnt';
}
}
class A extends Prnt {
public function __construct() {
echo 'In A';
}
}
class B extends A {
public function __construct() {
echo 'In B';
}
}
Как в конструкторе класса В вызвать конструктор родительского класса А - вопросов не вызывает, но вот как вызвать из конструктора класса В конструктор класса Prnt (при этом, в конструкторе класса А нет обращения к конструктору класса Prnt)- здесь мы остановились на том, что нельзя подобный вызов реализовать.
Вроде бы вопрос закрыт, но всё-таки хочется услышать мнение более опытных людей.

21 Авг 2019 в 07:04
252 +1
0
Ответы
1

В данном случае, вызвать конструктор "первого" родительского класса (Prnt) напрямую из конструктора класса B невозможно.
Однако, можно продумать другой подход: сделать конструктор в классе A, который вызовет конструктор класса Prnt, а затем уже вызвать этот конструктор из класса B. Например, такой код будет работать:

class Prnt {
public function __construct() {
echo 'In Prnt';
}
}
class A extends Prnt {
public function __construct() {
parent::__construct(); // Вызываем конструктор родительского класса Prnt
echo 'In A';
}
}
class B extends A {
public function __construct() {
parent::__construct(); // Вызываем конструктор родительского класса A
echo 'In B';
}
}
// Создаем объект класса B
$b = new B();

Таким образом, конструкторы классов A и B вызывают нужные конструкторы родительских классов в правильном порядке.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир