PHP, унаследовать объект в процессе исполнения, можно ли? Ситуация: надо сначала объявить класс A, потом подключить ряд файлов в которых объявлен класс библиотеки B (часть путей вычисляется в классе А), потом сделать, чтобы в процессе исполнения получилось A extends B. Если сразу напишу extends B, то вылетит ошибка, т.к. нужные файлы не найдены.
Понимаю, что вопрос странный и фактически является следствием неправильной архитектуры, но по ряду причин в старом приложении не могу использовать автозагрузку и композер в этом месте. Вместо наследования применил использование класса в качестве переменной объекта, но с наследованием получилось бы красивее и без лишних оберток. Вопрос носит скорее академический интерес к нестандартным возможностям языка. Есть варианты как динамически назначить объекту родителя?

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

Да, в PHP можно динамически изменить родителя объекта в процессе исполнения с помощью функции set_parent_class().

Пример:

class A {
public function __construct() {
include 'B.php';
set_parent_class($this, 'B');
}
// Далее идут методы и свойства класса A
}
$a = new A();

Однако, следует быть осторожным при использовании данного подхода, так как это может привести к неочевидным и трудноотслеживаемым проблемам в дальнейшем. Рекомендуется пересмотреть архитектуру приложения и использовать более стандартные методы работы с классами и наследованием.

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