我注意到,当我使用命名空间时,动态加载类与静态加载类的工作方式不同。因此,例如,在不使用命名空间的情况下,以下在实例化名为 的类的操作中是等效的FooBar
:
$foobar = new FooBar();
和
$classname = "FooBar";
$foobar = new $classname;
但是,如果在使用命名空间时我有一些这样的代码:
<?php
namespace Structure\Library;
$foobar = new UserService();
$classname = "UserService";
$barfoo = new $classname;
在这种情况下,UserService
类的完全限定名称是Structure\Library\UserService
,如果我使用完全限定名称,它在这两种情况下都有效,但如果我只使用它的快捷方式名称,'UserService'
它仅在使用静态方法实例化时才有效。有没有办法让它对两者都有效?
PS我正在为所有类使用自动加载器......但我假设问题发生在自动加载器之前并且正在影响传递给自动加载器的类字符串。