命名空间
命名空间是一种解决项目中的各种类库之间命名冲突的方案,类似于在磁盘中划分一层层的目录,将不同的软件安装到不同的目录,从而避免文件重名的情况。
- 命名空间
- namespace01.php
- namespace02.php
- 非限定名称访问
- 限定名称访问
- 完全限定名称访问
定义
<?php
namespace app;
...
定义子命名空间
namespace app\index\controller
...
index是app的子空间,controller是index的子空间,so在创建controller子空间时,会同时创建app和index命名空间。
** 使用**
namespace01.php
<?php
namespace one;
$name = 'Tom';
const PI = 3.14;
echo PI;
namespace02.php
<?php
namespace two;
require './namespace01.php';
echo $name,PI;
访问namespace02.php的结果如下:
非限定名称访问
在one空间中的PI被输出了而two空间中PI无值,这就属于非限定名称访问。
限定名称访问
语法:“子空间名称\空间成员名称”,表示从当前空间开始,访问其子空间的成员。这种方式只能用于访问当前空间的子空间成员,不能访问其父空间的成员。
将namespace01.php中的"namespce one"修改为"namespace two\one".
namespace02.php
<?php
namespace two;
require './namespace01.php';
echo $name,one\PI;
完全限定名称访问
语法:"\空间名称\空间成员名称";可以在任意的命名空间中访问从“\”根命名空间开始的任意空间内的成员。
namspace01.php
<?php
namespace one;
$name = 'Tom';
const PI = 3.14;
echo PI;
namspace02.php
<?php
namespace one;
$name = 'Tom';
const PI = 3.14;
echo PI;
结果如下:
命名空间中全局空间的使用
<?php
namespace common;
const PHP_VERSION = '5.6';
echo PHP_VERSION; //访问空间成员: 5.6
echo \PHP_VERSION; //访问全局成员: 7.0.9