一、概念
二、为什么PHP中使用命名空间?
当两个php文件中定义了同名的类时,便会引起命名冲突的错误
三、如何使用命名空间
A.php <?php
namespace aaa; # 定义名称aaa
class setClass{
function getClass(){
echo "my Class -> A";
}
}
?>
B.php <?php
namespace bbb; # 定义名称bbb
class setClass{
function getClass(){
echo "my Class -> A";
}
}
?>
Test.php
<?php
require_once 'A.php';
require_once 'B.php';
use aaa\setClass; # 引入名称空间aaa下的steClass类
$A = new setClass; # 实例化setClass类
$A->getClass();
?>
namespace bbb 改写成use bbb
四、命名空间的别名使用
当然出现如下代码时,会出现致命错误,说不能使用bbb\setClass用作实例化steClass,因为该名称已被使用。这时候就需要用到别名了。
use bbb\setClass as bbb;
五、全局命名空间
比如说,现在又有一个C.php,被引入到Test.php文件中。
C.php
<?phpclass
setClass{
function getClass(){
echo "my Class -> C";
}
}
?>
Test.php
<?php
require_once 'A.php';
require_once 'B.php';
require_once 'C.php'; # 引入C.php文件
?>
此时我们想要使用C.php的setClass类中getClass方法,则需在实例化时在前面加一个反斜杠**‘\’**
<?php
require_once 'A.php';
require_once 'B.php';
require_once 'C.php'; # 引入C.php文件
$C = new \setClass; # 加上'\' 则说明实例化顶级空间中的setClass类
$C->getClass(); ?>