php命名空間:子空間與公共空間實例詳解

伊谢尔伦
發布: 2023-03-07 19:26:02
原創
2739 人瀏覽過

命名空間和檔案系統的結構很像,資料夾可以有子資料夾,命名空間也可以定義子空間來描述各個空間之間的所屬關係。上一章介紹了什麼是命名空間?以及php命名空間的基本應用,這裡我們開始了解下命名空間的子空間與公共空間。

透過下面的例子來說明什麼是子空間

#例如, cart 和order 這兩個模組都處於同一個shop 專案內,透過命名空間子空間表達關係。

程式碼如下

<?php
namespace shop\cart;   //命名空间表示处于 shop 项目下的 cart
class Test {
}
namespace shop\order;  //命名空间表示处于 shop 项目下的 order
class Test {
   //申明与上面空间相同的类
}
$test =new Test();        //调用当前的类
$cart = new \shop\cart\Test();   //调用shop\cart空间的类
?>
登入後複製

命名空間的子空間還可以定義很多層次,例如 cn\my\www\shop 。多層子空間的聲明通常使用公司網域的倒置,再加上項目名稱組合而成。這樣做的好處是網域在網路上是不重複的,不會出現和網路同名的命名空間,還可以辨別出是哪家公司的具體項目。有很強的廣告效應。

命名空間中的公共空間

命名空間的公共空間很容易理解,其實沒有定義命名空間的方法、類別庫和常數都預設歸屬於公共空間,這樣就解釋了在先前版本編寫的程式碼大部分都可以在PHP5.3 以後的版本中運行。另外,公共空間中的程式碼段被引入到某個命名空間下以後,該公共空間中的程式碼段不屬於任何命名空間。例如,聲明一個腳本檔 common.php,在文件中聲明的函數和類別。

其程式碼如下:

<?php
 function fun(){
   
 }
 class Demo{
   
 }
?>
登入後複製

再建立一個PHP 文件,並在一個命名空間中引入這個腳本文件common.php,但可腳本裡的類別和函數並不會歸屬到這個命名空間。如果這個腳本裡沒有定義其他命名空間,它的元素就一直處於公共空間。

程式碼如下:

<?php
 namespace cn\my;
 include &#39;common.php&#39;;  //引入当前目录下的文件
 $demo = new Demo;    //出现致命错误:找不到 cn\my\Demo类
 $demo = new \Demo(); //正确的方式  加上 \
 var_dump();   // 错误,系统函数在公共空间
 \var_dump();  // 正确,使用了 \
?>
登入後複製

說明:呼叫公共空間的方式是直接在元素名稱前面加上 \ 就可以了,否則PHP 解析器會認為使用者像呼叫目前空間下的元素。除了自訂的元素,還包括 PHP 自帶的元素,都屬於公共空間。其實公共空間的函數和常數不用加 \ 也可以正常調用,但是為了正確區分元素所在區域,還是建議調用函數的時候加上 \

命名空間的子空間和公共空間就介紹到這裡,下一節帶給大家的是#命名空間中的三種名稱和術語

【相關教學推薦】

1. 《php.cn獨孤九賤(4)-php影片教學

2 .  影片教學:命名空間:我們雖然同名同性,但卻屬於不同時空

3.  php程式設計從入門到精通全套教學

#

以上是php命名空間:子空間與公共空間實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!