首頁 後端開發 php教程 php中命名空間的聲明與使用

php中命名空間的聲明與使用

Jun 28, 2018 pm 03:52 PM

* 命名空間的宣告與使用

 * 1.使用關鍵字:namespace

 * 2.php5.3

 * 3.namespace 之前不能有除了declare和註解以外的任何程式碼,html也不行

 * 4.命名空間預設從全域開始定位,全域空間用\表示,類似於根目錄

 * 5.如果目前腳本宣告了命名空間,則所有成員的存取,就必須使用命名空間,包括系統函數

//1. 宣告一個命名空間

namespace one;
class Demo{public $name='Peter Zhu';}
const SITE='PHP中文网';
function add($a,$b){return $a+$b;}
登入後複製


//如果我想宣告同名的類別,常數與函數可以再宣告一個命名空間

//2.一個腳本中允許有多個命名空間

//宣告命名空間:two,使用\tow\來引用

namespace two;
登入後複製

//現在宣告類別Demo,常數SITE,函數add,則不會衝突

class Demo{public $name='朱老师';}
const  SITE = 'www.php.cn';
function add($a,$b){return $a+$b;}
登入後複製

//相信大家看出來了,這非常像是在不同的目錄下面,允許創建同名檔案,原理是一樣的

echo (new Demo)->name, &#39;<br>&#39;; //默认输出的是当前空间的内容
登入後複製

//查看一下當前的命名空間是什麼?使用系統預置常數:__NAMESPACE__

echo &#39;当前命名空间是: &#39;,__NAMESPACE__,&#39;<br>&#39;;
登入後複製

/ /也可以帶上目前的命名空間來存取目前空間中的成員

//產生具有目前命名空間的類別名稱

$className = __NAMESPACE__.&#39;\Demo&#39;;
echo (new $className)->name,&#39;<br>&#39;;
登入後複製

//可以帶上完整的命名空間名稱,從全域空間\開始,相當於從根目錄開始

//專業術語: 完全限定名稱

echo (new \two\Demo)->name, &#39;<hr>&#39;;
登入後複製

//3.如何實作跨空間存取?

//如果我們要存取空間one中的Demo類別中的屬性,如何操作呢? 

//跨空間存取,與跨目錄存取檔案一樣,一定要帶上它完整的空間路徑

//例如我們要存取one空間的類別Demo中的成員

echo &#39;one空间的类成员:&#39;,(new \one\Demo)->name,&#39;<br>&#39;;
登入後複製

//4.在宣告了命名空間的腳本中,如何存取系統預先定義方法?

//例如宣告了一個單字元數組

$welcome = &#39;php中文网欢迎您&#39;;
\print_r($welcome); echo &#39;<br>&#39;;
print($welcome); echo &#39;<hr>&#39;;
登入後複製

//剛才我們說過,在空間中存取全域成員,必須要加\,這裡沒有加為什麼可以?

//因為如果使用者沒有加入,那麼會先在本空間中尋找有沒有var_dump()函數,

//如果沒有找到,再到全域空間查找,所以不報錯

//但如果我們在目前的two空間中也建立一個var_dump()函數,則只會執行

//目前空間中使用者自訂的var_dump(),系統同名函數不會被呼叫

#
function print_r($arg)
{
    echo &#39;我是当前空间声明的函数调用:&#39;.$arg;
}
print_r($welcome); echo &#39;<br>&#39;;
登入後複製

//等價呼叫語法:

\two\print_r($welcome);
登入後複製
登入後複製

//注意: 此print_r(),與系統內建的print_r()無任何關係,僅名稱相同而已

#//就好比,上海有條長江路,咱們合肥也有一條長江路一樣,這二條路除名稱一樣,再無任何關係

// 上海市寶山區長江路

#//合肥市廬陽區長江路

// 相信沒有人會認為這是同一條路?

//事實上,這二個函數的完整調用語句應該是這樣的:

//1.呼叫系統的:

\print_r($welcome);
登入後複製

//2.呼叫目前空間的:

\two\print_r($welcome);
登入後複製
登入後複製

//儘管後面名稱一樣,但是歸屬地是不同的

以上是php中命名空間的聲明與使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

解決PHP報錯:未找到指定的命名空間類 解決PHP報錯:未找到指定的命名空間類 Aug 18, 2023 pm 11:28 PM

解決PHP報錯:未找到指定的命名空間類

Redis的命名空間與過期機制的設計想法與實作方式 Redis的命名空間與過期機制的設計想法與實作方式 May 11, 2023 am 10:40 AM

Redis的命名空間與過期機制的設計想法與實作方式

如何在F3框架中使用命名空間(Namespace)? 如何在F3框架中使用命名空間(Namespace)? Jun 03, 2023 am 08:02 AM

如何在F3框架中使用命名空間(Namespace)?

C++語法錯誤:使用了未定義的命名空間,怎麼處理? C++語法錯誤:使用了未定義的命名空間,怎麼處理? Aug 21, 2023 pm 09:49 PM

C++語法錯誤:使用了未定義的命名空間,怎麼處理?

PHP8新功能範例:如何利用命名空間和程式碼來更好地組織程式碼結構? PHP8新功能範例:如何利用命名空間和程式碼來更好地組織程式碼結構? Sep 11, 2023 pm 12:22 PM

PHP8新功能範例:如何利用命名空間和程式碼來更好地組織程式碼結構?

解決PHP命名空間錯誤並產生對應錯誤提示的方法 解決PHP命名空間錯誤並產生對應錯誤提示的方法 Aug 07, 2023 pm 05:16 PM

解決PHP命名空間錯誤並產生對應錯誤提示的方法

命名空間的奧德賽:探索 PHP 的模組化天堂 命名空間的奧德賽:探索 PHP 的模組化天堂 Mar 10, 2024 am 09:04 AM

命名空間的奧德賽:探索 PHP 的模組化天堂

PHP 自動載入大師班:成為程式碼載入專家 PHP 自動載入大師班:成為程式碼載入專家 Mar 02, 2024 pm 09:43 PM

PHP 自動載入大師班:成為程式碼載入專家

See all articles