ThinkPHP5开发连载七之命名空间

上一篇文章讲解“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连载为卓象程序员原创,转载请联系卓象程序员

关注卓象程序员,定期发布技术文章

下一篇讲解“控制器定义”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180804A0GZF800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券