我在没有命名空间的文件中构建了一个新对象:
new My\Validator();
上面,在同一个文件中我有__autoload():
function __autoload($className)
{
var_dump($className);
}
__autoload()
功能打印
'My\My\Validator'.
双'My'
来自哪里?
答案 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
,因为您可以设置多个自动加载器回调。