好的PHP庫離不開一個好的命名空間概述
命名空間是一種封裝事物的方法。在很多地方都可以看到這種抽象概念,例如在作業系統中,目錄用來將相關檔案分組,對於目錄中的檔案來說,目錄就扮演了命名空間的角色。這個原理應用在程式設計領域就是命名空間的概念。 PHP 5.3後的版本開始支援命名空間。
定義命名空間
命名空間透過關鍵字namespace
來宣告。任何合法的PHP程式碼都可以包含在命名空間中,但只有類別、函數和常數這三種類型受命名空間的影響。
在聲明命名空間之前唯一合法的程式碼是用來定義原始檔編碼方式的declare
語句。命名空間必須是程式腳本的第一個語句,所有非 PHP 程式碼包含空白符都不能出現在命名空間的宣告之前。同一個命名空間可以定義在多個檔案中。
定義子命名空間
與目錄和檔案的關係相似,PHP也允許指定層次化的命名空間。
在同一個檔案中定義多個命名空間
PHP支援這種語法,但不提倡使用。在同一個檔案中定義多個命名空間有兩種語法形式:一種是簡單的上下羅列,一種是使用大括號形式的語法。建議使用第二種。
<code><span><?php</span><span>declare</span>(encoding = <span>'UTF-8'</span>); <span>namespace</span><span>MyProject</span> { /* <span>MyProject</span> */ } <span>namespace</span> { /* <span>global</span> */ }</code>
將全域的非命名空間中的程式碼與命名空間中的程式碼組合在一起,只能使用大括號形式的語法。南通長牌遊戲大廳http://www.szjmswy.com/
使用命名空間:基礎
要使用命名空間,必須了解PHP是如何知道要使用哪一個命名空間中的元素的。
在檔案系統中,存取一個檔案有三種方式:
。
。
。
namespaceFoo也是一個完全限定名稱。
namespace關鍵字和
__NAMESPACE__常數
__NAMESPACE__在動態建立名稱時很有用。
namespace可用來明確存取目前命名空間或子命名空間中的元素。它等價於類別中的
self操作符。
use操作符或使用多個符號,支援使用單一使用導入字use
語句。注意對命名空間中的名稱,前導的反斜杠是不必要的也不允許有反斜杠,因為導入的名稱必須是完全限定的,不會根據當前的命名空間進行相對解析。 全域空間
若未定義任何命名空間,所有的類別與函數的定義都是在全域空間。在名稱前加上前綴
,表示該名稱是全域空間中的名稱。 使用命名空間:後備全域函數/常數
在命名空間中,當PHP遇到非限定的類別、函數或常數名稱時,將會使用不同的有線策略來解析該名稱。
類別名稱總是解析到目前命名空間中的名稱,因此在存取系統內部或不包含在命名空間中的類別名稱時,必須使用完全限定名稱。
對於函數和常數來說,如果當前命名空間中不存在該函數或常數,PHP 會退而使用全域空間中的函數或常數。
名稱解析規則
名稱解析規則文字挺多的,需要具體問題具體分析。
(全文完)
以上就介紹了好的PHP庫離不開一個好的命名空間,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。