PHP:如何从导入的命名空间动态创建类?

时间:2014-12-02 22:02:33

标签: php namespaces

我四处搜索,无法得到答案,所以我在这里。

在我的PHP文件中,我导入了一些名称空间,后来,我想动态创建一个导入的类,但它不起作用,似乎PHP必须需要完整的类路径来动态创建类,只有别名导入的命名空间不会这样做。代码示例:
use some\foo; //import foo class
$b = 'foo'; $fullpath_b = 'some\foo';
$fullpath_b::static_function(); //this will work $b::static_function(); //this will not work

我的问题是,我只有导入类'foo'的别名,而不是完整路径类'some \ foo',我怎么可能得到'foo'的完整路径名,这样我才能创建上课了吗?如果我使用new ReflectionClass()创建类,它还需要一个完整的路径 注意:我不需要创建类的对象,只需要类。

感谢您的意见。

1 个答案:

答案 0 :(得分:0)

导入是在编译时执行的,目前无法确定导入的别名。有一个rfc可以为反射添加这样的功能,但似乎会被拒绝。

因此,如果要在Reflection中使用FQN或者动态创建它们,则必须使用FQN(http://php.net/manual/en/language.namespaces.importing.php