我需要一个想法来创建匿名类的PHP。我不知道我该怎么做。
查看我的限制:
- 在PHP中你不能创建匿名类,比如匿名函数(比如
class {}
); - 在PHP上,你没有类作用域(除了命名空间,但它有下面同样的问题);
- 在PHP中,不能使用变量来指定类名(如
class $name {}
); - 我没有权限安装
runkit
PECL。
我需要什么,为什么:
好吧,我需要创建一个名为ie create_class()
的函数,它接收一个键名和一个 * 匿名类 *。这对我很有用,因为我想使用PHP不能接受的不同的名称类符号。例如:
<?php
create_class('it.is.an.example', function() {
return class { ... }
});
$obj = create_object('it.is.an.example');
?>
所以,我需要一个接受这种用法的想法。我需要它,因为在我的框架中,我有这样的路径:/modules/site/_login/models/path/to/model.php
。因此,model.php
需要声明一个名为site.login/path.to.model
的新类。
在调用create_object()
时,如果内部缓存有$class
定义(像it.is.an.example
一样,它只是返回新的类对象)。如果没有,需要加载。所以我将使用$class
内容来快速搜索什么是类文件。
4条答案
按热度按时间c8ib6hqw1#
在PHP 7.0中会有anonymous classes。我不完全理解你的问题,但你的
create_class()
函数可能看起来像这样:这将示例化一个具有匿名类类型的对象,并将其注册到
$repository
中。要取出对象,请使用创建对象时使用的密钥:$repository['it.is.an.example']
。k0pti3hp2#
您可以使用stdClass创建一个虚拟类
gjmwrych3#
所以基本上你想实现一个工厂模式。
在中添加缓存以检查重复项
h7wcgrx34#
如果你真的需要,你可以使用
eval()
。但诸神不会同意的。如果你做了,你会下地狱的。