Нужно ли обращаться к конструктору наследуемого класса? Всем привет.
Вот пример, который вызвал сомнения в моих действиях:abstract class A extends PDO{
public function __construct(){
// устанавливаем соединение с бд
}
...
}
class B extends A{
function __construct(){
parent::__construct();
}
// используем методы из A
}
Суть в том, что если в классе B не использовать такой конструктор, то вылезает ошибка:Call to a member function prepare() on null in
По идее абстрактных классов - их нельзя инициализировать. Это то, что мне нужно. Но я бы хотел, чтобы при наследовании такого абстрактного класса запускалась функция типа конструктора, без вызова конструктора в дочернем классе, как у меня в примере. Возможно ли такое?

21 Авг 2019 в 07:05
200 +1
0
Ответы
1

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

Если вы хотите, чтобы при наследовании вызывалась функция типа конструктора без явного вызова конструктора в дочернем классе, вы можете использовать методы инициализации или фабричные методы, которые будут вызываться автоматически при создании объекта класса. Например:

abstract class A extends PDO{
public function init(){
// устанавливаем соединение с бд
}
...
}
class B extends A{
public function __construct(){
$this->init();
}
// используем методы из A

}

Таким образом, при создании объекта класса B будет вызываться метод init() родительского класса A, который будет выполнять необходимые действия.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 005 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир