namesapce命名空間的示例分析

這篇文章主要介紹了namesapce命名空間的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、無為網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為無為等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

1.命名空間的使用目的

 在PHP中函數(shù)、類、常量是不允許同名的。為了解決這三者的同名問題,所以出現(xiàn)了命名空間,故而命名空間只影響類、函數(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行。不過凡事都有例外,在聲明命名空間之前還有唯一合法的代碼是用于定義源文件編碼方式的 declare 語句。所有非 PHP 代碼包括空白符都不能出現(xiàn)在命名空間的聲明之前。例如下面的代碼會(huì)報(bào)錯(cuò)。

<html>
<?php
  
  namespace space1;
  namespace space2;
?>
</html>

3.命名空間的訪問

 命名空間的訪問分為:非限定空間訪問,限定空間訪問,完全限定訪問。

  a.非限定空間訪問

<?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)行訪問,輸出結(jié)果為:space1
?>

b.限定空間訪問

<?php
namespace space2\space1;
    function f1(){
     echo "space1";
      }
namespace space2;
function f1(){
     echo "space2";
      }
   f1();//此時(shí)輸出的是 space2
   space1\f1();//此時(shí)輸出的是space1
?>

c.完全限定空間訪問

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
namespace space2;
      function f1(){
     echo "space2";
     }
namespace space1;
     function f1(){
     echo "space1";
     }
   f1();//對(duì)上面空間成員進(jìn)行訪問,輸出結(jié)果為:space1
   \space3\f1();//對(duì)space3進(jìn)行訪問,輸出結(jié)果為:space3
   \space2\f1();//對(duì)space2進(jìn)行訪問,輸出結(jié)果為:space2
?>

4.引入空間成員

    a.use 空間名\空間名 【as 別名】:將指定空間引入到當(dāng)前空間。同可以使用as關(guān)鍵字為被引入的空間起個(gè)別名

    b.use 空間名\空間名\成員類 【as 別名】:將指定的空間中的成員引入到當(dāng)前空間,引入空間成員只能引入類

5.一些小情況

   一旦命名空間出現(xiàn),那么空間元素(類、常量、函數(shù))的訪問就被限定在空間內(nèi),如果使用非限定空間訪問,系統(tǒng)會(huì)出現(xiàn)以下解析邏輯(限定名稱或完全限定名稱是直接按照路徑準(zhǔn)確查找)

  • 首先在自己空間內(nèi)查找

  • 其次在如果找不到元素,不同空間元素的處理方式不同

            系統(tǒng)常量,系統(tǒng)函數(shù)如果找不到,會(huì)全局空間去找

             系統(tǒng)類是不會(huì)自動(dòng)去全局空間去找的(報(bào)錯(cuò),提示空間找不到)

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
//當(dāng)前所有訪問如果使用非限定名稱都代表訪問當(dāng)前空間內(nèi)的元素
f1();//訪問space3下f1()函數(shù)
//想要訪問函數(shù)
define('PI',3.14);//space3下沒有define()函數(shù),全局函數(shù)有
//想要訪問系統(tǒng)常量
echo PHP_VERSION; //space3下沒有define()函數(shù),全局函數(shù)有


//想要訪問類

//錯(cuò)誤方案
//$m=new MySQLi('localhost','root','root');//系統(tǒng)會(huì)提示類不存在

//正確方案
$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í)等著你來學(xué)習(xí)!

網(wǎng)站名稱:namesapce命名空間的示例分析
URL鏈接:http://muchs.cn/article2/gdegic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、搜索引擎優(yōu)化、建站公司標(biāo)簽優(yōu)化、用戶體驗(yàn)外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司