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

21 Авг 2019 в 07:07
280 +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 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир