1

我知道我可以通过执行在运行时生成一个类

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

这样我可以使用

echo $obj->foo; //bar

如果想让 $obj 从现有类继承怎么办?

我想要实现的目标: 我在 github ( https://github.com/balanza/paris ) 上分叉了 paris 项目。这是一个活跃的记录类。我想知道我需要为每个对象声明一个类,即使它是空的:

class User extends Model{}

我想我可能会使用动态对象来避免这种无聊的东西。

4

3 回答 3

2

你总是可以这样做eval('class User extends Model{}'),但这不是一个好主意。真的,您应该只在文件中创建类,然后操作码缓存将正常工作,可以进行版本跟踪等。

tl;dr:定义模型类,它是 Right Thing To Do™。

于 2011-02-08T02:40:04.830 回答
1

如果您真的没有其他方法可以做到这一点,您可以使用我的 Dynherit 类创建“动态”继承。它创建您想要的继承,但来自文件并且仅使用您尚未加载的类。

下载 v0.62:http ://optimisationphp.komrod.com/source/sha/test/dynamic_inheritance_01/dynherit_v0.62.zip

GitHub 链接:https ://github.com/Komrod/Dynherit

于 2012-08-02T19:30:28.273 回答
0

严格来说,对于您的问题,我认为可能的唯一方法是使用Runkit,它可以让您即时重新声明类。不确定该解决方案的便携性如何。

于 2011-02-07T17:55:20.293 回答