子命名空间与目录和文件的关系很象,PHP命名空间也允许指定层次化的命名空间的名称。因此,命名空间的名字可以使用分层次的方式定义
多命名空间可以在同一个文件中定义多个命名空间。在同一个文件中定义多个命名空间有两种语法形式在实际的编程实践中,非常不提倡在同一个文件中定义多个命名空间。这种方式的主要用于将多个PHP脚本合并在同一个文件中【1】简单组合语法(不建议使用)
全局将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的namespace语句加上大括号括起来
名称解析非限定名称Unqualifiedname是指名称中不包含命名空间分隔符的标识符,例如Foo限定名称Qualifiedname是指名称中含有命名空间分隔符的标识符,例如FooBar完全限定名称Fullyqualifiedname是指名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如FooBar。namespaceFoo也是一个完全限定名称如果要动态访问元素(例如,变量函数),必须使用完全限定名称
访问内部元素PHP支持两种抽象的访问当前命名空间内部元素的方法,__NAMESPACE__魔术常量和namespace关键字常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串
关键字namespace可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的self操作符
全局空间如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与PHP引入命名空间概念前一样。在名称前加上前缀表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此
别名和导入php允许通过别名引用或导入外部的完全限定名称,是命名空间的一个重要特征。这有点类似于在类unix文件系统中可以创建对其它的文件或目录的符号连接所有支持命名空间的PHP版本支持三种别名或导入方式:为类名称使用别名、为接口使用别名或为命名空间名称使用别名在PHP中,别名是通过操作符use来实现的别名