這篇文章為大家介紹一下php如何宣告命名空間、存取空間元素的三種方式,引入命名空間的方法。
1.1 介紹
在一個大的專案中,可能會遇到同名的類別、函數、常數,為了區分這些元素,我們可以將這些元素分別存放到不同的命名空間。 1.命名空間就是包,用來存放項目中的類別、函數、常數 2.透過namespace關鍵字來宣告命名空間
1.2 宣告命名空間
範例:
<?php namespace China; // 定义命名空间 function getInfo () { echo '我是中国人'; } getInfo(); namespace USA; // 定义命名空间 function getInfo () { echo '我是美国人'; } getInfo(); ?>
效果:
利用\命名空間\
可進入某個命名空間中呼叫方法。
範例:
<?php namespace China; // 定义命名空间 function getInfo () { echo '我是中国人'; } getInfo(); namespace USA; // 定义命名空间 function getInfo () { echo '我是美国人'; } getInfo(); \China\ getInfo(); ?>
效果:
#1.3 多層命名空間
命名空間的名字可以是多層次的(子級命名空間) 例如:
<?php namespace China\Beijing\Shunyi; // 定义命名空间 function getInfo () { echo 'China\Beijing\Shunyi'; } getInfo(); // 非限定名称访问 namespace USA\Washington; // 定义命名空间 function getInfo () { echo 'USA\Washington'; } \USA\Washington\ getInfo(); // 完全限定名称访问 ?>
效果:
#1.4 存取空間元素的三種方式
1、非限定名稱訪問 2、完全限定名稱訪問 3、限定名稱訪問 範例:
<?php namespace China\Beijing\Shunyi; // 定义命名空间 function getInfo () { echo 'China\Beijing\Shunyi'; } namespace China\Beijing; // 定义命名空间 function getInfo () { echo 'China\Beijing'; } getInfo(); // 非限定名称访问 \China\Beijing\getInfo(); // 完全限定名称访问 Shunyi\getInfo(); // 限定名称访问 ?>
效果:
透過use
引入命名空間
完全限定名稱存取元素
引入命名空間的拼接規則
公共空間引入空間(去除公共部分,公共部分只能留一級)空間元素
範例:
<?php namespace China\Beijing\Shunyi; // 定义命名空间 function getInfo () { echo 'China\Beijing\Shunyi<br>'; } namespace China\Beijing; // 定义命名空间 function getInfo () { echo 'China\Beijing<br>'; } use China\Beijing\Shunyi; getInfo(); Shunyi\getInfo(); ?>
效果:
2.1 引入空間元素
引入類別: use 引入函數:use function 引入常數: use const 範例:
<?php namespace China\Beijing\Shunyi; // 定义命名空间 class Student { } function getInfo() { echo 'jdk'; } const TYPE = 'CONST'; namespace USA; // 定义命名空间 // 引入类 use China\Beijing\Shunyi\Student; $stu = new Student(); var_dump($stu); echo '<br>'; // 引入函数 use function China\Beijing\Shunyi\getInfo; getInfo(); echo '<br>'; // 引入常量 use const China\Beijing\Shunyi\TYPE; echo TYPE; ?>
效果:
#2.2 給予類別、函數取別名
#如果引入的類別和函數與目前空間的類別和函數名稱相同,則需要為引入的類別和函數取別名。 透過as取別名 範例:
<?php namespace China\Beijing\Shunyi; // 定义命名空间 class Student { } namespace USA; // 定义命名空间 class Student { } use China\Beijing\Shunyi\Student as ChinaStudent; $stu=new Student; var_dump($stu); echo '<br>'; $stu1=new ChinaStudent; var_dump($stu1); ?>
效果:
#2.3 公用空間
如果一個頁面沒有namespace聲明空間這個頁面的元素在公共空間下
公共空間用\
表示
範例:
<?php function getInfo() { echo '李白<br>'; } \getInfo(); ?>
效果:
#2.4 命名空間注意事項
1 、命名空間只能存放類別、函數、const常數。 2.第一個namespace前面不能有任何的程式碼,空白字符,header()也不行。 3、包含檔案不影響目前的命名空間。
推薦學習:《PHP影片教學》
以上是深入淺析php中如何宣告與引入命名空間的詳細內容。更多資訊請關注PHP中文網其他相關文章!