## 详解命名空间含义及调用方法(PHP5.3以上)
命名空间解决同名问题 函数或者类调用
### 常量问题
分别在zhangsan跟lisi命名空间里定义 define('PI',3.14); 会报错重复定义 因为全局
如果分别在zhangsan跟lisi命名空间定里定义 const PI=3.14; 不会报错 因为归属于当前命名空间
```
namespace zhangsan
function test(){
echo 'zhangsan 函数';
}
class A{
public function dome(){
echo 'zhangsan A类'
}
}
const PI=3.14;
namespace lisi
function test(){
echo 'lisi 函数';
}
class A{
public function dome(){
echo 'lisi A类'
}
}
const PI=3.1415;
test(); //当前函数调用于当前命名空间lisi
\zhangsan\test(); //在同级调用方法
// 在同文件写的代码没有上一层概念直接用 "\" 根目录下面找zhangsan
// 因为zhangsan跟lisi命名空间是平行的 没有上一层不需要".."去找
\changsha\zhangsan\test();
//如果命名空间有子空间changsha\zhangsan和changsha\lisi 完全限定名称调用法
$a =new A; $a->demo();//类调用 也是靠近谁调用谁 输出lisi的类
$a = new \zhangsan\A; $a->demo();//就可以调用zhangsan的类
use \zhangsan\A as zhangsan_A;
$a = new zhangsan_A(); $a->demo();
//这个缩少代码量 先use \zhangsan\A 一定起别名 因为当前调用的类会有重名报错!
//use加载类 如果加载的函数没效果 也不报错
echo PI;//输出lisi 3.1415;
echo \zhangsan\PI; //输出zhangsan 3.14
require_once('2.php'); //在李四代码下面包含一个2.php文件 代码如下
namespace wangwu
function test(){
echo 'wangwu 函数';
}
class A{
public function dome(){
echo 'wangwu A类'
}
}
const PI=3.1415926;
test();//这个时候函数调用还是输出 lisi 因为你还在lisi的namespace里面调用 没做指定
\wangwu\test(); //才正常输出wangwu 函数
\test(); //这种写法 如果wangwu也就是2.php文件没有namespace 输出是wangwu函数
// 没有namespace 表示那个子空间在公共空间 "\"就是根目录 指到公共空间
$a = new \A(); $a->demo(); //输出wangwuA类
echo \PI; //输出3.1415926
echo $name; //如果输出变量 只能调用到公共空间的 其他的不可以调用
```
