A-A+

PHP命名空间

2018年01月27日 php 暂无评论 阅读 447 views 次

如果,我们的php程序中有多个类,类写多了,有可能出现相同的类命;实例化这个类的时候,程序就不知道你到底是用那个类。

 

如果这些类都引入同一个文件,那么会报错:

Fatal error: Cannot redeclare class xx

不能重新申明类 xx.因为不知道你到底用的是哪个类。

 

命名空间就可以巧妙的解决这个问题。给这些类配置不同的命名空间,就相当于不同的类了,虽然同样的名字。

 

namespace a\a\imdupeng;

namespace a\b\imdupeng;

 

使用的时候,在前面加上命名空间,例如:

$app_a = new a\a\imdupeng();

$app_b = new a\b\imdupeng();

 

但每次都加上命名空间很麻烦,可以提前申明使用imdupeng这个类的时候是使用的哪个命名空间的imdupeng类。

use a\a\imdupeng;

那么以后使用new imdupeng();就会默认使用a\a\imdupeng这个命名空间文件里面的imdupeng类。

 

那么在use a\a\imdupeng;这种情况下要使用a\b\imdupeng这个类,就需要在前面写上命名空间,这个也很麻烦,那么可以重新定义一下类名,方法如下:

use a\b\imdupeng as imdupeng2;

那么以后使用 new imdupeng2();就是默认使用的a\b\imdupeng这个文件的imdupeng类。

 

另外还有顶层命名空间,例如继续添加一个imdupeng()的类文件。不使用命名空间,就会默认为这是顶层命名空间。使用方法是在类名前面加上顶级明明空间目录“\”:

$app_c = \imdupeng();

 

 

标签:

给我留言