php的命名空间实例
什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件 -- php手册
namespace 的定义和使用
-定义
<?php // t1.php
namespace demoindex;
Class Test {
// 执行自动调用
public function __construct(){
echo '1';
}
}
<?php // t2.php
namespace demoindex;
include_once './t1.php';
$demo = new Test();
namespace 用来定义一个命名空间,由上面可以看出:t1|t2都是在demoindex 空间中, 可以用来共用类Test()
我们尝试将t2.php 删除其命名空间
t2.php 修改为
<?php
use demoindex; // 此时可以忽略
include_once './t1.php';
$demo = new demoindexTest();
实际上她会去调用 命名空间下的类名,使用反斜杠,提供这种使用命名空间的方式,
来杜绝在使用类的时候出现混合类重复的现象|use 在这里只是申明解析的作用,具体请看下面
我们再次修改t1.php - t2.php
<?php // t1.php
namespace demoindex;
Class Test {
// 执行自动调用
public function __construct(){
echo '1';
}
}
namespace demoindex2;
Class Test {
// 执行自动调用
public function __construct(){
echo '<br/>2';
}
}
<?php // t2.php
use demoindex as t1;
use demoindex2 as t2;
include_once './t1.php';
$demo1 = new t1Test();
$demo2 = new t2Test();
好,你可以看出,在t2中,我修改了use | demo 的写法
实际上,use 承接了一个声明解析的效果,我们在demo中调用类的时候,省去了一系列书写重复;
as 相当于等于的意思,使用t1 代表的就是 demoindex
引用类中的写法呢,说明了在类名即使相同,但是命名空间不同的清空下,即使是重复,也不会报错。就相当于我们访问的是两个不同文件夹中的相同名字的子文件,并不会造成不能重复命名的问题
学习地址-》 http://www.cnblogs.com/yjf512/archive/2013/05/14/3077285.html