在php語言裏面,語法規則同名的函數、類名、常量在一個請求裏不容許出現屢次,若是有的程序不得以必須出現同名的函數、類名、常量,能夠吧它們放到不一樣的空間裏面作請求,這個空間就是命名空間php
命名空間針對函數、類名、常量起做用,統稱爲元素函數
define(key,val);//忽略命名空間 const key=val; //受命名空間影響
use a\b\c\d; echo d\fun(); //經過限定名稱方式訪問(限定名稱是引入空間名的最後一級名稱)
use a\b\c\d\類名; echo 類名::$name; //非限定名稱訪問
use a\b\c\d\類名 as 類名X; echo 類名X::$name; //非限定名稱訪問
<?php //namespace 空間名 namespace space1; const USER='root'; function a(){ echo 'a'; } namespace space2; const USER='admin'; function a(){ echo 'b'; } //默認當前空間(挨着最近的空間) a(); echo USER; //訪問其餘空間的元素 \space1\a(); echo \space1\USER; echo '<hr>'; //多級空間 namespace xian\yanta\yuhua; class stu{ public $name='xiaobai'; static $age='12'; } namespace xianyang\liquan\junma; class stu{ public $name='xiaohei'; } //訪問當前空間 $stu=new stu(); echo $stu->name; //訪問其餘空間 $stu=new \xian\yanta\yuhua\stu(); echo $stu->name; echo '<hr>'; namespace d1; function e(){ echo 'e'; } namespace d2\a; function e(){ echo 'e2'; } namespace d2; function e(){ echo 'e1'; } //1.非限定名稱 e(); //2.徹底限定名稱 \d1\e(); //3.限定名稱(自動拼接空間名) a\e(); echo '<hr>'; //空間引入 use xian\yanta\yuhua; //引入空間 $stu=new yuhua\stu(); //限定名稱方式訪問 echo $stu->name; echo '<hr>'; //元素引入(僅類) use xian\yanta\yuhua\stu; echo stu::$age; //非限定名稱訪問 ?>