PHP 命名空间(namespace)


1 命名空间综述

在C#和Java中都有命名空间的概念,而在PHP中,命名空间在PHP 5.3版本中首次加入的,以前的版本没有这个功能。

1.1 为什么要使用命名空间?

做项目时,一个文件可能会引入多个文件。如果不使用命名空间,引入的多个文件中可能存在同名的类、函数、常量,就会报错(重复定义的错误)。

以函数为例,演示如下:

1.1.1 不使用命名空间:

image

image

image

运行结果:

image

1.1.2 使用命名空间:

只在上述代码中修改b.php文件,如下:

image

再次访问,则不会报错,运行结果:

image

1.2 使用命名空间 优势

简单的说,就是解决代码冲突。具体如下:

  • 使用框架、第三方类库,可以避免的类、函数、常量的冲突。
  • 可以分工协作,有利于多人同时开发一个项目,提高开发效率。

2 定义命名空间

如上1.1.2所示,一旦namespace声明了命名空间,后面的代码都属于该空间。

  • 在定义的命名空间之前不能有任何输出。如html代码等。
  • 在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句,如:declare(encoding='UTF-8');
  • 项目中,只在一个php文件的开头进行定义命名空间,并且只定义一个。
  • 通常该命名空间要遵循PSR-0命名规范(命名空间和目录结构保持一致)。

3 空间分类

分为两类:全局空间 和 命名空间

3.1 全局空间

不在namespace声明的空间里面的代码都属于全局空间。

3.2 命名空间

如:namespace Think;

如:namespace Think\Controller; 这种反斜线分割的、层次化的,就是子命名空间。

如果需要在命名空间使用全局空间的类、函数、常量,在调用时,需要加上反斜线(代表全局空间)。

4 命名空间的使用

4.1使用限定名称、非限定名称访问
  • 非限定名称:  访问当前命名空间。(在当前文件中直接使用)
  • 限定名称:     类似于相对路径,访问当前空间下的子命名空间,如:new People\Person();
  • 完全限定名称:类似于绝对路径,访问全局空间,如:new \Person();实例化全局空间下的Person类
4.2 导入 命名空间,然后直接使用

语法:use 命名空间,可以起别名(as 别名)。

目的:在当前文件中使用其他命名空间的 类、函数、常量。(使用时,就不用加上限定名称)

转载于:https://www.cnblogs.com/falling-maple/p/6234715.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值