命名空间对于PHP来说就像是文件和目录的关系,它允许我们为两个不同的类使用相同的类名称。
比如我们希望有个名为Line的类,这个类可以在图像上画一条直线。然而,Line类的画线功能在处理像素格式图像和矢量格式图像时是不大一样的,因此理想的解决方案便是实用两个带有命名空间的类。
命名空间使用两个关键的语言结构:namespace 和 use。要声明一个命名空间,需要在文件的顶部指定命名空间的名称,之后在文件中声明的所有类酒都属于这个命名空间的了。
需要注意的是,namespace 代码行必须在文件的顶部,在其他任何变量、类或者函数定义之前。
声明命名空间如下所示:
<?php
namespace Vector;
class Line{
public function draw($x1, $y1, $x2, $y2){ ... }
}
使用命名空间如下所示:
<?php
require_once('Vector.php');
$line = new Vector::Line();
$line->draw(1,1,1,1);
此外,如果存在多个层次的命名空间,如 Graphics::Vector::Line 便是一个有效的命名空间。而随着命名空间越来越多,可能会有点繁琐,因此我们可以使用 use 来简略它。
用法如下:
<?php
require('Vector.php');
use Vector::Line as Line;
$line = new Line();
$line->draw(1,1,1,1);
?>