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

來源:互聯網
上載者:User
* 命名空間的聲明與使用

* 1.使用關鍵字:namespace

* 2.php5.3+

* 3.namespace 之前不能有除了declare和注釋之外的任何代碼,html也不行

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

* 5.如果當前指令碼聲明了命名空間,則所有成員的訪問,就必須使用命名空間,包括系統函數

//1. 聲明一個命名空間

namespace one;class Demo{public $name='Peter Zhu';}const SITE='topic.alibabacloud.com';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, '<br>'; //預設輸出的是當前空間的內容

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

echo '當前命名空間是: ',__NAMESPACE__,'<br>';

//也可以帶上當前的命名空間來訪問當前空間中的成員

//產生帶有當前命名空間的類名

$className = __NAMESPACE__.'\Demo';echo (new $className)->name,'<br>';

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

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

echo (new \two\Demo)->name, '<hr>';

//3.如何?跨空間訪問?

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

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

//例如我們要訪問one空間的類Demo中的成員

echo 'one空間的類成員:',(new \one\Demo)->name,'<br>';

//4.在聲明了命名空間的指令碼中,如何訪問系統預定義方法?

//例如聲明了一個單字元數組

$welcome = 'php中文網歡迎您';\print_r($welcome); echo '<br>';print($welcome); echo '<hr>';

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

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

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

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

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

function print_r($arg){    echo '我是當前空間聲明的函數調用:'.$arg;}print_r($welcome); echo '<br>';

//等價調用文法:

\two\print_r($welcome);

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

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

// 上海市寶山區長江路

// 合肥市廬陽區長江路

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

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

//1.調用系統的:

\print_r($welcome);

//2.調用當前空間的:

\two\print_r($welcome);

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.