наследование динамического класса php - PullRequest
1 голос
/ 07 февраля 2011

Я знаю, что могу создать класс во время выполнения, выполнив

$obj = (object)array('foo' => 'bar');+

таким образом я могу использовать

echo $obj->foo; //bar

Что если вы хотите, чтобы $ obj наследовал от существующего класса?

Чего я хочу достичь: Я разрабатываю парижский проект на github (https://github.com/balanza/paris). Это активный класс записей. Интересно, мне нужно объявить класс для каждого объекта, даже если он пустой:

class User extends Model{}

Полагаю, я мог бы использовать динамический объект, чтобы избежать этого скучного.

Ответы [ 3 ]

2 голосов
/ 08 февраля 2011

Вы всегда можете сделать eval('class User extends Model{}'), но это не очень хорошая идея.На самом деле, вам просто нужно создать класс в файле, тогда кеширование кода операции будет работать правильно, его можно отслеживать по версии и т. Д.™.

1 голос
/ 02 августа 2012

Если для вас нет другого способа сделать это, вы можете создать «динамическое» наследование с моим классом Dynherit. Он создает необходимое наследование, но из файлов и только с классами, которые вы еще не загрузили.

Скачать v0.62: http://optimisationphp.komrod.com/source/sha/test/dynamic_inheritance_01/dynherit_v0.62.zip

Ссылка на GitHub: https://github.com/Komrod/Dynherit

0 голосов
/ 07 февраля 2011

Строго на ваш вопрос, единственный способ увидеть это возможно - использовать Runkit , который позволяет вам повторно объявлять классы на лету. Не уверен, насколько портативно это решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...