您好,登錄后才能下訂單哦!
這篇文章主要介紹了namesapce命名空間的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1.命名空間的使用目的
在PHP中函數、類、常量是不允許同名的。為了解決這三者的同名問題,所以出現了命名空間,故而命名空間只影響類、函數、常量(const)。
2.命名空間的使用格式
a.可以命名一個空間
<?php namespace space1;//namespace關鍵字 +空間名 代碼; ?>
b.也可以同時命名多個空間
<?php namespace space1;//namespace關鍵字 +空間名 代碼1; namespace space2; 代碼2; namespace space3; 代碼3; .......//代碼1,代碼2,代碼3,可相同亦可不同 ....... ?>
注意事項:如果一個php文件中,第一個空間的定義義必須放在第1行。不過凡事都有例外,在聲明命名空間之前還有唯一合法的代碼是用于定義源文件編碼方式的 declare 語句。所有非 PHP 代碼包括空白符都不能出現在命名空間的聲明之前。例如下面的代碼會報錯。
<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();//對上面空間成員進行訪問,輸出結果為:space1 ?>
b.限定空間訪問
<?php namespace space2\space1; function f1(){ echo "space1"; } namespace space2; function f1(){ echo "space2"; } f1();//此時輸出的是 space2 space1\f1();//此時輸出的是space1 ?>
c.完全限定空間訪問
<?php namespace space3; function f1(){ echo "space3"; } namespace space2; function f1(){ echo "space2"; } namespace space1; function f1(){ echo "space1"; } f1();//對上面空間成員進行訪問,輸出結果為:space1 \space3\f1();//對space3進行訪問,輸出結果為:space3 \space2\f1();//對space2進行訪問,輸出結果為:space2 ?>
4.引入空間成員
a.use 空間名\空間名 【as 別名】:將指定空間引入到當前空間。同可以使用as關鍵字為被引入的空間起個別名
b.use 空間名\空間名\成員類 【as 別名】:將指定的空間中的成員引入到當前空間,引入空間成員只能引入類
5.一些小情況
一旦命名空間出現,那么空間元素(類、常量、函數)的訪問就被限定在空間內,如果使用非限定空間訪問,系統會出現以下解析邏輯(限定名稱或完全限定名稱是直接按照路徑準確查找)
首先在自己空間內查找
其次在如果找不到元素,不同空間元素的處理方式不同
系統常量,系統函數如果找不到,會全局空間去找
系統類是不會自動去全局空間去找的(報錯,提示空間找不到)
<?php namespace space3; function f1(){ echo "space3"; } //當前所有訪問如果使用非限定名稱都代表訪問當前空間內的元素 f1();//訪問space3下f1()函數 //想要訪問函數 define('PI',3.14);//space3下沒有define()函數,全局函數有 //想要訪問系統常量 echo PHP_VERSION; //space3下沒有define()函數,全局函數有 //想要訪問類 //錯誤方案 //$m=new Mysqli('localhost','root','root');//系統會提示類不存在 //正確方案 $m= new \Mysqli('localhost','root','root'); ?>
感謝你能夠認真閱讀完這篇文章,希望小編分享的“namesapce命名空間的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。