本文实例讲述了PHP进阶学习之命名空间基本用法。分享给大家供大家参考,具体如下:
前言
命名空间(namespace),在编程语言中,是对作用域的一种特殊的抽象.它表示着一个标识符的可见范围。一个标识符可在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突,因为已有的定义都处于其他命名空间中。
在PHP中也存在命名空间的用法,由它控制可见范围的这个标识符一般指的就是类和函数。
一、PHP命名空间基础
从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如PHP的类名是不可以重复的,但是经常我们需要引入一些第三方的类库,常常类名就会在项目中产生重复冲突,所以,命名空间就是解决这个冲突的一种方法。
在PHP5.3以后,就已经引入了命名空间(namespace)的概念,即同个命名空间下的类名不能重复,不同命名空间下可以存在同名的类。
这样,在引入第三方类库的时候,只有各个类库的命名空间不一样,就不会产生冲突。
所以根据官方所说,在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题:
1、用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
2、为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
需要注意的是:
- 同个文件下可以存在多个命名空间;
- 不同命名空间内的类可以相互调用。
二、PHP命名空间的用法
1、定义
命名空间的定义采用关键字namespace,定义方式如下:
namespace example
则该命名空间下的类都归属于该命名空间,example命名空间下的类不能重名。
或者可以定义多级命名空间:
namespace example\test\demo
则改命名空间下的类全归属于example\test\demo命名空间。
定义后的命名空间可以用__NAMESPACE__
魔法变量来获取当前命名空间。