Я знаю, что я могу создать класс во время выполнения, выполнив
$obj = (object)array('foo' => 'bar');+
таким образом я могу использовать
echo $obj->foo; //bar
Что делать, если хотите, чтобы $ obj наследовался от существующего класса?
Что я хочу достичь: я нарисовал проект paris на github ( https://github.com/balanza/paris ). Это активный класс записей. Интересно, мне нужно объявить класс для каждого объекта, даже если он пуст:
class User extends Model{}
Думаю, я мог бы использовать динамический объект, чтобы избежать этого скучного материала.
Вы всегда можете сделать eval('class User extends Model{}')
но это не очень хорошая идея. Действительно, вы должны просто создать класс в файле, тогда кэширование кода операции будет работать правильно, оно может быть отслежено и т. Д. И т. Д.
tl; dr: Определите класс модели, это Right Thing To Do ™.
Если для вас нет другого способа сделать это, вы можете создать «динамическое» наследование с моим классом Dynherit. Он создает наследование, которое вы хотите, но из файлов и только с теми классами, которые вы еще не загрузили.
Загрузить v0.62: http://optimisationphp.komrod.com/source/sha/test/dynamic_inheritance_01/dynherit_v0.62.zip
Ссылка GitHub: https://github.com/Komrod/Dynherit
Строго к вашему вопросу, единственный способ, которым я могу это видеть, – это использовать Runkit , который позволит вам повторно объявлять классы на лету. Не знаете, насколько портативно это решение.