一、概念



二、为什么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(); ?>
```

