真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHP的命名空間是什么-創(chuàng)新互聯(lián)

PHP命名空間的是什么?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、虛擬主機(jī)、營(yíng)銷軟件、網(wǎng)站建設(shè)、成縣網(wǎng)站維護(hù)、網(wǎng)站推廣。

namespace即“命名空間”,也稱“名稱空間” 。VS.NET中的各種語(yǔ)言使用的一種代碼組織的形式 通過(guò)名稱空間來(lái)分類,區(qū)別不同的代碼功能 同時(shí)也是VS.NET中所有類的完全名稱的一部分。命名空間是用來(lái)組織和重用代碼的。如同名字一樣的意思,NameSpace(名字空間),之所以出來(lái)這樣一個(gè)東西,是因?yàn)槿祟惪捎玫膯卧~數(shù)太少,并且不同的人寫(xiě)的程序不可能所有的變量都沒(méi)有重名現(xiàn)象,對(duì)于庫(kù)來(lái)說(shuō),這個(gè)問(wèn)題尤其嚴(yán)重,如果兩個(gè)人寫(xiě)的庫(kù)文件中出現(xiàn)同名的變量或函數(shù)(不可避免),使用起來(lái)就有問(wèn)題了。為了解決這個(gè)問(wèn)題,引入了名字空間這個(gè)概念,通過(guò)使用 namespace xxx;你所使用的庫(kù)函數(shù)或變量就是在該名字空間中定義的,這樣一來(lái)就不會(huì)引起不必要的沖突了。

提出

在命名空間提出之前,不同的組件很容易碰到命名的沖突,例如 Request 、Response 等常見(jiàn)的命名。PHP 在 5.3 后提出了命名空間用來(lái)解決組件之間的命名沖突問(wèn)題,主要參考了文件系統(tǒng)的設(shè)計(jì):

同一個(gè)目錄下不允許有相同的文件名 - 同一個(gè)命名空間下不允許有相同的類;

不同的目錄可以有同名文件 - 不同的命名空間可以有相同的類;

定義

使用 namespace 關(guān)鍵字來(lái)定義一個(gè)命名空間。其中,頂層命名空間通常為廠商名,不同開(kāi)發(fā)者的廠商命名空間是唯一的。命名空間不需要與文件目錄一一對(duì)應(yīng),但是最好遵守 PSR-4 規(guī)范。

命名空間必須在所有代碼之前聲明,唯一的例外就是 declare 關(guān)鍵字。

命名空間內(nèi)可包含任意 PHP 代碼,但是僅對(duì)類 (包括抽象類和 Trait)、接口、函數(shù)和常量這四種類型生效。

使用

使用 use 關(guān)鍵字來(lái)引入命名空間

定義和使用推薦遵循 PSR-2 的規(guī)范

namespace 之后必須存在一個(gè)空行;

所有 use 聲明必須位于 namespace 聲明之后;

每條 use 聲明必須只有一個(gè) use 關(guān)鍵字。

use 語(yǔ)句塊之后必須存在一個(gè)空行。

當(dāng) use 引入的類出現(xiàn)同名時(shí),可使用 as 來(lái)定義別名

限定符

除了使用 use 外,還可以直接使用 \ 限定符來(lái)進(jìn)行解析,規(guī)則很簡(jiǎn)單:如果含有 \ 前綴則代表從全局命名空間開(kāi)始解析,否則則代表從當(dāng)前命名空間開(kāi)始解析。

此規(guī)則也適用于函數(shù)、常量等

$a = \strlen('hi'); // 調(diào)用全局函數(shù) strlen
$b = \INI_ALL; // 訪問(wèn)全局常量 INI_ALL
$c = new \Exception('error'); // 實(shí)例化全局類 Exception

有兩個(gè)需要特別注意的地方:

對(duì)于函數(shù)和常量而言,如果當(dāng)前命名空間不存在,則會(huì)自動(dòng)去全局命名空間去尋找,因此可省略 \ 前綴。對(duì)于類而言,如果當(dāng)前命名空間解析不到,不會(huì)去全局空間尋找,因此,不可省略 \

$a = strlen('hi');
$b = INI_ALL;
$c = new Exception('error'); // 錯(cuò)誤
$c = new \Exception('error'); // 正確

當(dāng)動(dòng)態(tài)調(diào)用命名空間時(shí),該命名空間始終會(huì)被當(dāng)成是全局命名空間,因此可以省略前綴 \

$class1 = 'Foo\Bar';
$object1 = new $class1;  // 始終被解析成 \Foo\Bar

在內(nèi)部訪問(wèn)命名空間

PHP 支持兩種抽象的訪問(wèn)當(dāng)前命名空間內(nèi)部元素的方法,__NAMESPACE__ 魔術(shù)常量和 namespace 關(guān)鍵字。

__NAMESPACE__ 常量的值是包含當(dāng)前命名空間名稱的字符串,如果是在全局命名空間,則返回空字符串。

關(guān)鍵字 namespace 可用來(lái)顯式訪問(wèn)當(dāng)前命名空間或子命名空間中的元素。它等價(jià)于類中的 self 操作符

namespace App;
use blah\blah as mine; 
blah\mine(); // App\blah\mine()
namespace\blah\mine(); // App\blah\mine()
namespace\func(); // App\func()
namespace\sub\func(); // App\sub\func()
namespace\cname::method(); // App\cname::method()
$a = new namespace\sub\cname(); // App\sub\cname
$b = namespace\CONSTANT; // App\CONSTANT

轉(zhuǎn)義 \ 符號(hào)

此外,推薦對(duì)所有的 \ 進(jìn)行轉(zhuǎn)義,避免出現(xiàn)不可預(yù)期的后果

$class = "dangerous\name"; // \n 被解析成換行符
$obj = new $class;
$class = 'dangerous\name'; // 正確,但是不推薦
$class = 'dangerous\\name'; // 推薦
$class = "dangerous\\name"; // 推薦

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司的支持。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享名稱:PHP的命名空間是什么-創(chuàng)新互聯(lián)
文章分享:http://weahome.cn/article/ddshoj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部