老雷PHP培训教程之命名空间
查看视频教程或者获取有关《老雷PHP培训教程》更多信息

老雷PHP课堂之PHP的命名空间


命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题: 

1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 

2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,

它们是:类(包括抽象类和traits)、接口、函数和常量。

定义命名空间

命名空间通过关键字namespace来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间

namespace MyProject;

namespace MyProject\Sub\Level;

funtion a(){};

使用命名空间

<?php
namespace MyProject;
function b(){};
?>
<?php
namespace MyProject\Sub\Level;
function a(){}
?>
<?php
namespace MyProject;
//非限定名称 同一个命名空间
b();
//限定空间 继承当前的命名空间
Sub\Level\a();
//使用完全限定名称 独立的命名空间
\MyProject\Sub\Level\a();
\strlen();
?>

别名和导入

别名和导入是通过操作符 use 来实现的

use My\Full\Classname as Another;
// 下面的例子与 use My\Full\NSname as NSname 相同
use My\Full\NSname;
// 导入一个全局类
use ArrayObject;
// importing a function (PHP 5.6+)
use function My\Full\functionName;
// aliasing a function (PHP 5.6+)
use function My\Full\functionName as func;
// importing a constant (PHP 5.6+)
use const My\Full\CONSTANT;