国产精品成人VA在线观看,亚洲日韩在线中文字幕综合,亚洲AV电影天堂男人的天堂,久久人人爽人人爽人人av东京热

News新聞

業(yè)界新聞動(dòng)態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁(yè)      樂(lè)道系統(tǒng)FAQ      PHP關(guān)鍵特性之命名空間實(shí)例詳解

PHP關(guān)鍵特性之命名空間實(shí)例詳解

標(biāo)簽: 發(fā)布日期:2017-05-06 00:00:00 275

命名空間主要是為了解決代碼中類和函數(shù)可能存在沖突的問(wèn)題,而這個(gè)特性其他語(yǔ)言一早就有,PHP則是姍姍來(lái)遲,它的出現(xiàn)催生了 PSR-4 的誕生,從而也催生了 Composer 的興起,所以是非常重要的特性。

命名空間的定義

命名空間是一個(gè)容器,這個(gè)容器主要是為了識(shí)別其下的類和函數(shù)。一旦定義了命名空間,它下面的代碼就屬于這個(gè)命名空間了,所以命名空間的定義要在代碼的最開始行。

對(duì)于同一個(gè)包來(lái)說(shuō),同一個(gè)命名空間或者子命名空間的代碼沒(méi)有必要在一個(gè) PHP 文件中定義,子命名空間下的代碼是為了完成特定模塊的工作,組合起來(lái)就是一個(gè)包完整的命名空間。

假如編寫的代碼沒(méi)有定義命名空間,那說(shuō)明它屬于全局的命名空間(\ 符號(hào)),所以能夠直接引用類或者函數(shù)(不用添加 \ 符號(hào))。

引用命名空間標(biāo)識(shí)符的三種方式

(1)Fully-qualified name

類似于操作系統(tǒng)上的絕對(duì)路徑,而且是完整的路徑,所以在理解的時(shí)候不會(huì)有誤解。

比如在 new \A\B\C ,那么 C 就被會(huì)解析到 A\B 命名空間下的 C 類。

(2)Qualified name

類似于操作系統(tǒng)上的相對(duì)路徑,它包含部分名字并被引用到當(dāng)前的命名空間。

比如 B\C() 在命名空間 A 下調(diào)用,則最終引用的命名空間就是 A\B\C()。

(3)Unqualified name

類似于Qualified name,但是沒(méi)包括子命名空間。

比如 C() 在命名空間 A\B 下調(diào)用,則最終引用的命名空間就是 A\B\C()。

通過(guò)一個(gè)例子來(lái)說(shuō)明三種引用方式:

namespace \Example;
require_once "fnction.php";
class ClassA {}
function Function() {}
//完全限定名稱
\Example\Function();
\Example\B\Function(); 
//限定名稱
B\Function(); //指向 \Example\B\Function();
//非限定名稱
$test = new ClassA(); //resolves to \Example\ClassA
Function(); //指向 \Example\Function