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();