PHP 命名空间解析规则
2012-12-08 16:49
633 查看
命名空间名称分类:
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 。
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 。
相关文章推荐
- [中高级] PHP命名空间规则解析及高级功能
- PHP 5.3新特性命名空间规则解析及高级功能
- PHP命名空间规则解析及高级功能
- PHP命名空间解析规则(告别PHP namespace给你带来的纠结)
- PHP基础之命名空间9——名称解析规则
- PHP命名空间规则解析及高级功能
- PHP命名空间解析规则
- PHP命名空间规则解析及高级功能
- PHP 面向对象编程和设计模式 (5/5) - PHP 命名空间的使用及名称解析规则
- PHP命名空间规则解析及高级功能
- PHP 5.3新特性命名空间规则解析及高级功能
- PHP命名空间的名称解析规则
- PHP命名空间规则解析及高级功能3
- PHP命名空间规则解析及高级功能(1)
- [轉]PHP命名空间规则解析及高级功能
- PHP命名空间解析规则(告别PHP namespace给你带来的纠结)
- PHP 解析有命名空间的 XML
- PHP 命名空间规则深层应用
- PHP解析XML命名空间的3种方式(未完)
- PHP命名空间概念解析