上一篇文章讲解“URL大小写”,本篇文章讲解“命名空间”。
1. 命名空间概念
什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件foo.txt可以同时在目录/home/greg和/home/other中存在,但在同一个目录中不能存在两个foo.txt文件。另外,在目录/home/greg外访问foo.txt文件时,我们必须将目录名以及目录分隔符放在文件名之前得到/home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。
2. 为什么要使用命名空间?
php5.3版本之后才有的新特性,主要是为了解决命名冲突问题,通过namespace关键词将php函数、变量和类定义在一个命名空间中。
随着你的PHP代码库的增长,对之前定义的函数和类名进行修改时风险也更高了,当你试图增加第三方组件或插件时问题更严重,如果存在两个或两个以上的代码集实现了一个“Database”和“User”类会怎么样?所以在没有namespace的时候,我们会想各种命名规则来区分不同的类,比如project1_school1_class1_Student或者project2_school_class_Student。
注意:使用namespace前不要有任何输出,否则将会报错。
3. namespace的定义
默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。
在PHP文件的顶部使用一个关键字namespace就可以定义命名空间,它必须是第一个命令,在它前面不能出现非PHP代码、HTML或空格。如:
mynamespace.php的代码如下:
4. namespace使用
usenamespace.php的代码如下:
命名空间使用方法1:直接使用使用命名空间中的常量、函数、类
命名空间使用方法2:用use关键词导入命名空间
5. 子命名空间
PHP允许定义具有层次的命名空间以便库能够细分,子命名空间使用一个反斜线字符(\)分隔,如:
mynamespace.php的代码如下:
使用mynamespace.php中的命名空间中的常量、函数、类,代码如下:
ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员
关注卓象程序员,定期发布技术文章
下一篇讲解“控制器定义”
领取专属 10元无门槛券
私享最新 技术干货