這篇文章主要介紹了namesapce命名空間的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)成都全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、無(wú)為網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城系統(tǒng)網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為無(wú)為等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
1.命名空間的使用目的
在PHP中函數(shù)、類(lèi)、常量是不允許同名的。為了解決這三者的同名問(wèn)題,所以出現(xiàn)了命名空間,故而命名空間只影響類(lèi)、函數(shù)、常量(const)。
2.命名空間的使用格式
a.可以命名一個(gè)空間
<?php namespace space1;//namespace關(guān)鍵字 +空間名 代碼; ?>
b.也可以同時(shí)命名多個(gè)空間
<?php namespace space1;//namespace關(guān)鍵字 +空間名 代碼1; namespace space2; 代碼2; namespace space3; 代碼3; .......//代碼1,代碼2,代碼3,可相同亦可不同 ....... ?>
注意事項(xiàng):如果一個(gè)php文件中,第一個(gè)空間的定義義必須放在第1行。不過(guò)凡事都有例外,在聲明命名空間之前還有唯一合法的代碼是用于定義源文件編碼方式的 declare 語(yǔ)句。所有非 PHP 代碼包括空白符都不能出現(xiàn)在命名空間的聲明之前。例如下面的代碼會(huì)報(bào)錯(cuò)。
<html> <?php namespace space1; namespace space2; ?> </html>
3.命名空間的訪(fǎng)問(wèn)
命名空間的訪(fǎng)問(wèn)分為:非限定空間訪(fǎng)問(wèn),限定空間訪(fǎng)問(wèn),完全限定訪(fǎng)問(wèn)。
a.非限定空間訪(fǎng)問(wèn)
<?php namespace space3; function f1(){ echo "space3"; } namespace space3\space2;//其中"\"代表space2是space3的子空間,同理space3是space2的父空間。 function f1(){ echo "space2"; } namespace space3\space2\space1; function f1(){ echo "space1"; } f1();//對(duì)上面空間成員進(jìn)行訪(fǎng)問(wèn),輸出結(jié)果為:space1 ?>
b.限定空間訪(fǎng)問(wèn)
<?php namespace space2\space1; function f1(){ echo "space1"; } namespace space2; function f1(){ echo "space2"; } f1();//此時(shí)輸出的是 space2 space1\f1();//此時(shí)輸出的是space1 ?>
c.完全限定空間訪(fǎng)問(wèn)
<?php namespace space3; function f1(){ echo "space3"; } namespace space2; function f1(){ echo "space2"; } namespace space1; function f1(){ echo "space1"; } f1();//對(duì)上面空間成員進(jìn)行訪(fǎng)問(wèn),輸出結(jié)果為:space1 \space3\f1();//對(duì)space3進(jìn)行訪(fǎng)問(wèn),輸出結(jié)果為:space3 \space2\f1();//對(duì)space2進(jìn)行訪(fǎng)問(wèn),輸出結(jié)果為:space2 ?>
4.引入空間成員
a.use 空間名\空間名 【as 別名】:將指定空間引入到當(dāng)前空間。同可以使用as關(guān)鍵字為被引入的空間起個(gè)別名
b.use 空間名\空間名\成員類(lèi) 【as 別名】:將指定的空間中的成員引入到當(dāng)前空間,引入空間成員只能引入類(lèi)
5.一些小情況
一旦命名空間出現(xiàn),那么空間元素(類(lèi)、常量、函數(shù))的訪(fǎng)問(wèn)就被限定在空間內(nèi),如果使用非限定空間訪(fǎng)問(wèn),系統(tǒng)會(huì)出現(xiàn)以下解析邏輯(限定名稱(chēng)或完全限定名稱(chēng)是直接按照路徑準(zhǔn)確查找)
首先在自己空間內(nèi)查找
其次在如果找不到元素,不同空間元素的處理方式不同
系統(tǒng)常量,系統(tǒng)函數(shù)如果找不到,會(huì)全局空間去找
系統(tǒng)類(lèi)是不會(huì)自動(dòng)去全局空間去找的(報(bào)錯(cuò),提示空間找不到)
<?php namespace space3; function f1(){ echo "space3"; } //當(dāng)前所有訪(fǎng)問(wèn)如果使用非限定名稱(chēng)都代表訪(fǎng)問(wèn)當(dāng)前空間內(nèi)的元素 f1();//訪(fǎng)問(wèn)space3下f1()函數(shù) //想要訪(fǎng)問(wèn)函數(shù) define('PI',3.14);//space3下沒(méi)有define()函數(shù),全局函數(shù)有 //想要訪(fǎng)問(wèn)系統(tǒng)常量 echo PHP_VERSION; //space3下沒(méi)有define()函數(shù),全局函數(shù)有 //想要訪(fǎng)問(wèn)類(lèi) //錯(cuò)誤方案 //$m=new MySQLi('localhost','root','root');//系統(tǒng)會(huì)提示類(lèi)不存在 //正確方案 $m= new \Mysqli('localhost','root','root'); ?>
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“namesapce命名空間的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
網(wǎng)站名稱(chēng):namesapce命名空間的示例分析
URL鏈接:http://vcdvsql.cn/article2/gdegic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、建站公司、標(biāo)簽優(yōu)化、用戶(hù)體驗(yàn)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)