首页 > Web开发 > 详细

PHP 命名空间namespace 和 use

时间:2017-01-25 18:45:42      阅读:236      评论:0      收藏:0      [点我收藏+]

慕课网教程:

http://www.imooc.com/video/7834

 

PHP 中命名空间的概念和高级语言(如C#、JAVA)有很大的差异,一度让我混淆甚至怀疑它存在的意义和目的。

今天找时间学习了一下才明白它的作用:防止类名(class)重复

 

一个简单的demo来学习一下命名空间;

先分别新建两个简单的类文件,并且故意让类名重复;

 

a.php

# a.php
<?php 
class Apple {
    public function get_info(){
        echo "a";
    }
}

 

b.php

#b.php
<?php 
class Apple {
    public function get_info(){
        echo "b";
    }
}

 

新建一个测试页面index.php

<?php 

require_once ‘a.php‘;
require_once ‘b.php‘;

$a = new Apple;
$a->get_info();

 

打开页面后你会看到报错咯:

技术分享

 

 

原因很明显就是类名冲突了,那改一下类名不就得了?是的,但某些场景下,我们可能避免不了发生这样的冲突。

PHP给我们提供的解决方案就是命名空间(namespace

 


PHP中的命令空间作用,有点像将类放入某个文件夹中保管,写法如下:

<?php 
namespace a\b\c;
class Apple { public function get_info(){ echo "a"; } }

 

再次打开index.php页面发现错误消失了,并且输出了b。说明了使用了b的Apple类

如果我想使用a的Apple类应该如何做呢?使用 use 关键字,代码如下:

<?php 
# 让编译器知道下列的new Apple都是使用a\b\c命名空间下的类
use a\b\c\Apple;

require_once ‘a.php‘;
require_once ‘b.php‘;

$a = new Apple;  // 等同于 $a = new a\b\c\Apple

$a->get_info();

 

PHP 命名空间namespace 和 use

原文:http://www.cnblogs.com/CyLee/p/6349818.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!