PHP 命名空间解析规则
命名空间名称分类:
1 非限定名称:名称中不包含命名空间分割符的标识符
2 限定名称:名称中含有命名空间分割符\的标识符
3 完全限定名称: 以命名空间分割符开始的标识符
解析规则:
1 完全限定名称的标识符(函数 类 常量),在编译时解析,例如 new \a\b 解析为类 a\b
2 所以的限定名称和非限定名称标识符,根据当前的导入规则在编译是转换。例如 a\b\c 被导入为c,则c\d\e() 调用转换为a\b\c\d\e()
3 在命名空间内部,所有的没有根据导入规则转换的限定名称都会在前面加上当前的命名空间。例如在命名空间 a\b中调用 c\d\e(),则c\d\e() 转换为 a\b\c\d\e()
4 非限定名称根据当前的导入规则,在编译时转换。
5 在命名空间内部,对非限定名称的函数调用是在运行时解析,假设有个 foo() 函数
1) 当前命名空间中查找 foo()函数
2)如果在当前命名空间未找到foo()函数,进入全局查找调用。
6 在命名空间内部,对非限定名称和限定名称的类的调用是在运行时解析
如果要在命名空间内部引用全局空间里的全局类,则使用\ClassName 。