命名空间

一、概念

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

Last updated