Php 名称空间-\uuuAutoLoad()需要错误的类
我在文件中构建了一个没有名称空间的新对象:Php 名称空间-\uuuAutoLoad()需要错误的类,php,autoload,Php,Autoload,我在文件中构建了一个没有名称空间的新对象: new My\Validator(); 上面,在同一个文件中,我得到了\uu autoload(): \uuu autoload()函数用于打印 'My\My\Validator'. 双'My'从何而来?它正在添加My命名空间,因为当您使用new My\Validator()创建对象时,您可能已经在My命名空间中了 将翻译为: $obj = new My\My\Validator(); 由于您已经在My命名空间中,因此您可以: 只需调用ne
new My\Validator();
上面,在同一个文件中,我得到了\uu autoload():
\uuu autoload()
函数用于打印
'My\My\Validator'.
双
'My'
从何而来?它正在添加My
命名空间,因为当您使用new My\Validator()
创建对象时,您可能已经在My
命名空间中了
将翻译为:
$obj = new My\My\Validator();
由于您已经在My
命名空间中,因此您可以:
- 只需调用
newvalidator()
- 或者调用
new\My\Validator()
\
将告诉PHP查看全局名称空间
另一方面,使用而不是
\uuuu autoload
是一种良好的做法,因为您可以设置多个自动加载回调。您需要在全局空间中声明您的自动加载,因为命名空间为“My”?您正在调用new My\Validator()是从全局命名空间还是My
命名空间?您可能也想看看spl\u autoload\u register
函数-它比\u autoload
函数更灵活,因为它允许您注册多个自动加载器。“在我的文件中,没有名称空间”,这将是全局的namespace@Szymon它不会为我打印,而是打印“我的\验证器”,这是预期的。也许您可以提供发生这种行为的可运行示例?
namespace My;
$obj = new My\Validator();
$obj = new My\My\Validator();