PHP, унаследовать объект в процессе исполнения, можно ли? Ситуация: надо сначала объявить класс A, потом подключить ряд файлов в которых объявлен класс библиотеки B (часть путей вычисляется в классе А), потом сделать, чтобы в процессе исполнения получилось A extends B. Если сразу напишу extends B, то вылетит ошибка, т.к. нужные файлы не найдены. Понимаю, что вопрос странный и фактически является следствием неправильной архитектуры, но по ряду причин в старом приложении не могу использовать автозагрузку и композер в этом месте. Вместо наследования применил использование класса в качестве переменной объекта, но с наследованием получилось бы красивее и без лишних оберток. Вопрос носит скорее академический интерес к нестандартным возможностям языка. Есть варианты как динамически назначить объекту родителя?
Да, в PHP можно динамически изменить родителя объекта в процессе исполнения с помощью функции set_parent_class().
Пример:
class A { public function __construct() { include 'B.php'; set_parent_class($this, 'B'); } // Далее идут методы и свойства класса A } $a = new A();
Однако, следует быть осторожным при использовании данного подхода, так как это может привести к неочевидным и трудноотслеживаемым проблемам в дальнейшем. Рекомендуется пересмотреть архитектуру приложения и использовать более стандартные методы работы с классами и наследованием.
Да, в PHP можно динамически изменить родителя объекта в процессе исполнения с помощью функции set_parent_class().
Пример:
class A {public function __construct() {
include 'B.php';
set_parent_class($this, 'B');
}
// Далее идут методы и свойства класса A
}
$a = new A();
Однако, следует быть осторожным при использовании данного подхода, так как это может привести к неочевидным и трудноотслеживаемым проблемам в дальнейшем. Рекомендуется пересмотреть архитектуру приложения и использовать более стандартные методы работы с классами и наследованием.