A-A+
PHP命名空间
如果,我们的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();