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

PHP:如何从导入的命名空间动态创建类?,php,namespaces,Php,Namespaces,我到处找,找不到答案,所以我在这里 在我的PHP文件中,我导入了一些名称空间,后来,我想动态创建一个导入的类,但它不起作用,似乎PHP需要完整的类路径来动态创建类,只有导入名称空间的别名不能做到这一点。代码示例: 使用一些\foo//导入foo类 $b='foo'; $fullpath_b='some\foo' $fullpath_b::static_function()//这会奏效的 $b::静态_函数()//这行不通 我的问题是,我只有导入类'foo'的别名,而不是完整路径类'some\

我到处找,找不到答案,所以我在这里

在我的PHP文件中,我导入了一些名称空间,后来,我想动态创建一个导入的类,但它不起作用,似乎PHP需要完整的类路径来动态创建类,只有导入名称空间的别名不能做到这一点。代码示例:

使用一些\foo//导入foo类
$b='foo'; $fullpath_b='some\foo'
$fullpath_b::static_function()//这会奏效的 $b::静态_函数()//这行不通

我的问题是,我只有导入类'foo'的别名,而不是完整路径类'some\foo',如何才能获得'foo'的完整路径名,以便从中创建类?如果我使用
新建ReflectionClass()
创建类,它还需要一个完整路径。
注意:我不需要创建类的对象,只需要类


谢谢您的意见。

导入是在编译时执行的,目前无法确定导入的别名。有一种方法可以将这种功能性添加到反射中,但这似乎会被拒绝


因此,如果要在反射中使用FQN或动态创建FQN(),就必须对类使用FQN。

我认为这是不可能的。可能您需要找到另一种方法-可能是传递到
$b
完整名称空间或只是一些标志,这取决于您将调用哪个所需方法。谢谢!我知道现在不可能了,我知道你有一个类的别名。在您的情况下,有些\foo,但您需要真正的路径。我认为您的示例不够清楚,因为别名和实名都是相同的。如果您的实际用例非常复杂,您可以查看以下内容: