我四处搜索,没有得到答案,所以我在这里。
在我的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"的完整路径名,以便我可以从中创建类? 如果我使用 new ReflectionClass()
来创建类,它也需要一个完整的路径。
注意:我不需要创建类的对象,只需要类。
感谢您的意见。
导入是在编译时执行的,目前无法确定导入的别名。有一个 rfc 可以将这种功能添加到反射中,但这似乎会被拒绝。
因此,如果要在反射中使用它们或动态创建它们,则必须为类使用 FQN (http://php.net/manual/en/language.namespaces.importing.php)