前言
以前其实写过关于命名空间的文章,感觉写的太多,反而不容易理解,这篇文章给大家做总结性的整理。
什么是命名空间
等同于我们电脑的“文件夹”,解决“类、函数、常量”的重名冲突问题。将同名的“类”放在不同的“命名空间”,等同于同名的文件,放在不同的文件夹。
基本语法
定义命名空间
namespacex;一般写在文件顶端,之后出现的所有代码,都属于这个命名空间。
x这个类似于文件夹的名字,名字随便写(好像你新建文件夹一样)
PS:同一代码文件可定义多个命名空间,但一般没有人这么做。
定义子命名空间
namespacex\y;和多级文件夹的概念一样。
使用其他命名空间的类
使用类时,必须带上命名空间。命名空间也有相对路径、绝对路径的说法,具体请参考下面的代码
导入其他命名空间的类
每次都要带上命名空间的路径,很麻烦,所以有了use
PS:use永远都是绝对路径。
实战意义
对多数项目而言,命名空间没什么用
命名空间,本质是为了解决类名冲突。而大多数项目规模不大,不使用命名空间也不会冲突。
目前大多数项目,都离不开命名空间
既然没用,为什么还离不开?
因为命名空间还有另外一个用处:自动包含类文件。
只要你的命名空间路径和代码文件所在的硬盘路径一致,就能借助某些方法自动include()类文件,而免去了手动管理之苦。
某些方法是什么方法?
满足PSR1的代码规范即可,大家有兴趣可以自行搜索。
目前所有的PHP框架,都使用了这个特性,所以必须学会使用命名空间。
总结
命名空间,原本是为了解决某些项目“类名冲突”的问题,对多数人并没有多少用处。但因为能借此免去手动管理类文件之苦,所以盛行。