慕课网教程:
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();
原文:http://www.cnblogs.com/CyLee/p/6349818.html