說說PHP中的命名空間相關概念

來源:互聯網
上載者:User

標籤:ros   編碼   post   圖片   概述   介紹   ssm   中文   sql資料庫   

說說PHP中的命名空間相關概念

1. PHP中的命名空間是什嗎?

什麼是命名空間?“從廣義上來說,命名空間是一種封裝事物的方法。在非常多地方都能夠見到這樣的抽象概念。

比如。在作業系統中檔案夾用來將相關檔案分組。對於檔案夾中的檔案來說,它就扮演了命名空間的角色。詳細舉個範例,檔案 foo.txt 能夠同一時候在檔案夾/home/greg 和 /home/other 中存在。但在同一個檔案夾中不能存在兩個 foo.txt 檔案。

另外。在檔案夾 /home/greg 外訪問 foo.txt 檔案時,我們必須將檔案夾名以及檔案夾分隔字元放在檔案名稱之前得到 /home/greg/foo.txt。這個原理應用到程式設計領域就是命名空間的概念。”――命名空間概述

2. PHP命名空間該怎樣理解?

從本質上講,命名空間就是一個容器,這個容器內我們能夠放入類、函數和變數。他們在同一命名空間內能夠無條件相互訪問。

在命名空間之外,就必須引用或者匯入其它命名空間。才幹調用它們包括的這些項。



命名空間跟shell中的檔案檔案夾的概念是一樣一樣的。在當前檔案夾下能夠直接用檔案名稱訪問全部檔案,假設須要訪問其它檔案夾下的檔案,就須要輸入相對路徑或絕對路徑。

引用方式:

namespace foo; class Foo {            public function foo()                {                          return \top\namespace\bar\Bar::fuck();                  }             }


匯入方式:

namespace foo; use top\namespace\bar\Bar;  class Foo {        public function foo()             {        return Bar::fuck();              }           }

匯入就相當於將目的類複製一份到當前命名空間中(http://www.lai18.com/content/368824.html)。

3. PHP命名空間有何實際應用?

命名空間的存在是為瞭解決以下兩個問題:

1). 使用者編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字衝突。

2). 為非常長的標識符名稱(一般是為了緩解第一類問題而定義的)建立一個別名(或簡短)的名稱,提高源碼的可讀性。



4. 一些tips

1. 同一個空間下的類直接相互直接調用,屬於一家。比如 Laravel 中的 PageController 類中能夠直接寫 Page::all() 這種代碼來調用 Page 這個model。由於他們倆都在頂級命名空間下。

2. 若一個類存在於非頂級命名空間中,那麼它僅僅能在調用相同是當前命名空間下的其它類才不用“引用”或“匯入”。它們屬於一家。不論什麼子命名空間都是還有一個命名空間。還有一個容器,沒有除了容器之間關係之外的不論什麼特殊關係。



3. Laravel 採用 classmap 方式進行自己主動載入(autoload)。PHP儘管有了命名空間這個進階特性,可是這僅僅是邏輯關係,require 檔案還是要有的。這個類和檔案的相應關係就存在 /vendor/composer/autoload_classmap.php ,每次 composer dump-autoload 都會又一次編譯、產生。 



延伸閱讀

《PHP基礎知識總結》系列技術文章整理收藏 
總結PHP基礎知識。對剛開始學習的人還是高手都值得參考鞏固。

1PHP檢查庫或函數是否可用的方法

2關於PHP5 Session生命週期介紹

3PHP頁面和Mysql資料庫的轉UTF8編碼問題總結

4WAMP5的配置問題

5揭秘PHP深受Web開發人員喜愛的原因

6PHP中浮點數計算比較及取整不準確的解決方案

7php擷取client電腦螢幕參數的方法

8對於PHP中命名空間概念的入門理解

9php5.4下面版本號碼json不支援不轉義內容中文的解決方案

10PHP相關面試中最常常涉及的12個問題

11PHP函數extension_loaded()使用方法執行個體

12關於PHP浮點數精度損失問題

13PHP中使用正則表達式提取中文實現筆記

14PHP中使用break跳出多重迴圈代碼執行個體

15php實現遍曆檔案夾並刪除指定檔案裡指定內容

16PHP中的命名空間相關概念淺析

1750個提高PHP運行效率的技巧 【轉載】

18php數組函數序列之sort() 對數組的元素值進行升序

19PHP實現的各種中文編碼轉換類分享

20PHP使用mb_substr()解決中文字串截取亂碼問題

21php中get_object_vars()方法使用方法執行個體

22PHP結合HTML5使用FormData對象提交表單及上傳圖片

23php使用parse_url和parse_str解析URL

24PHP實現加密的幾種方式介紹

25PHP 魔術變數和魔術函數具體解釋

26PHP中return使用方法具體解讀

27Java和PHP在Web開發方面對照分析

28PHP擷取POST資料的幾種方法匯總

29令PHP剛開始學習的人的困惑的10個知識點

30PHP魔術方法使用總結

31PHP:40+開發工具推薦

32php中利用header設定content-type和常見檔案類型的content-type

說說PHP中的命名空間相關概念

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.