1. 为什么使用命名空间?
    用户编写的代码与PHP内置的类、函数、常量或者第三方的类、函数、常量的名字冲突,如果避免冲突就得起新的名字(名字起多了,总会容易重复的),有时候名字可能会很长,可读性差。为了避免用户绞尽脑汁的起名字,以及提高可读性。所以要使用命名空间。
  2. 什么是命名空间?
    从广义上来说,命名空间是一种封装事物的方法。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt
  3. 只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits)、接口、函数和常量。只有declare可以出现在namespace之前。同一个命名空间可以定义在多个文件中,也可以在同一个文件中定义多个命名空间。
  4. 如何使用命名空间?
    非限定名称,或不包含前缀的类名称;限定名称,或包含前缀的名称;完全限定名称,或包含了全局前缀操作符的名称(参考手册用法示例