php的命名空间实例 ,php的命名空间

本文深入讲解PHP中的命名空间概念及其实现方式。通过实例演示如何定义和使用命名空间,解释了如何解决类名冲突问题,并介绍了use语句的作用。

php的命名空间实例

什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件 -- php手册

namespace 的定义和使用

-定义

<?php  // t1.php
    
namespace demo\index;

Class Test {
    // 执行自动调用
    public function __construct(){
        echo '1';
    }
}

<?php // t2.php

namespace demo\index;

include_once './t1.php';

$demo = new Test();

namespace 用来定义一个命名空间,由上面可以看出:t1|t2都是在demo\index 空间中, 可以用来共用类Test()

我们尝试将t2.php 删除其命名空间
t2.php 修改为

<?php 

use demo\index;  // 此时可以忽略

include_once './t1.php';

$demo = new demo\index\Test();

实际上她会去调用 命名空间下的类名,使用反斜杠,提供这种使用命名空间的方式,

来杜绝在使用类的时候出现混合类重复的现象|use 在这里只是申明解析的作用,具体请看下面

我们再次修改t1.php - t2.php

<?php // t1.php
namespace demo\index;

Class Test {

    // 执行自动调用
    public function __construct(){
        echo '1';
    }
}

namespace demo\index2;

Class Test {

    // 执行自动调用
    public function __construct(){
        echo '<br/>2';
    }
}

<?php  // t2.php

use demo\index as t1;
use demo\index2 as t2;

include_once './t1.php';

$demo1 = new t1\Test();
$demo2 = new t2\Test();

好,你可以看出,在t2中,我修改了use | demo 的写法

实际上,use 承接了一个声明解析的效果,我们在demo中调用类的时候,省去了一系列书写重复;

as 相当于等于的意思,使用t1 代表的就是 demo\index

引用类中的写法呢,说明了在类名即使相同,但是命名空间不同的清空下,即使是重复,也不会报错。就相当于我们访问的是两个不同文件夹中的相同名字的子文件,并不会造成不能重复命名的问题

学习地址-》 http://www.cnblogs.com/yjf512/archive/2013/05/14/3077285.html

转载于:https://www.cnblogs.com/ar13/p/9061986.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值