命名空间 - __autoload()需要一个错误的类

时间:2013-04-17 14:25:18

标签: php autoload

我在没有命名空间的文件中构建了一个新对象:

new My\Validator();

上面,在同一个文件中我有__autoload():

function __autoload($className) 
{
    var_dump($className);
}

__autoload()功能打印

'My\My\Validator'.  

'My'来自哪里?

1 个答案:

答案 0 :(得分:1)

它正在添加My命名空间,因为当您使用My创建对象时,您可能已在new My\Validator()命名空间内。

namespace My;
$obj = new My\Validator();

将被翻译为:

$obj = new My\My\Validator();

由于您已经在My命名空间内,您可以:

  • 或者只是致电new Validator()
  • 或致电new \My\Validator()

开始\将告诉PHP查看全局命名空间。


另一方面,最好使用spl_autoload_register代替__autoload,因为您可以设置多个自动加载器回调