0

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

new My\Validator();

上面,在我得到的同一个文件中__autoload():

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

函数__autoload()打印

'My\My\Validator'.  

双子'My'从哪里来?

4

1 回答 1

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,因为您可以设置多个自动加载器回调

于 2013-04-17T15:07:15.990 回答