命名空間 PHP手冊筆記

2021-09-06 23:54:24 字數 1534 閱讀 4289

原文:

命名空間 - php手冊筆記

命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念,比如在作業系統中,目錄用來將相關檔案分組,對於目錄中的檔案來說,目錄就扮演了命名空間的角色。這個原理應用到程式設計領域就是命名空間的概念。php 5.3後的版本開始支援命名空間。

命名空間通過關鍵字namespace來宣告。任何合法的php**都可以包含在命名空間中,但只有類、函式和常量這三種型別受命名空間的影響。

在宣告命名空間之前唯一合法的**是用於定義原始檔編碼方式的declare語句。命名空間必須是程式指令碼的第一條語句,所有非 php **包括空白符都不能出現在命名空間的宣告之前。同乙個命名空間可以定義在多個檔案中。

與目錄和檔案的關係相似,php也允許指定層次化的命名空間。

php支援這種語法,但不提倡使用。在同乙個檔案中定義多個命名空間有兩種語法形式:一種是簡單的上下羅列,一種是使用大括號形式的語法。建議使用第二種。

<?php 

declare(encoding = 'utf-8');

namespace myproject

namespace

將全域性的非命名空間中的**與命名空間中的**組合在一起,只能使用大括號形式的語法。

要使用命名空間,必須了解php是如何知道要使用哪乙個命名空間中的元素的。

在檔案系統中,訪問乙個檔案有三種方式:

與檔案系統相似,在php命名空間中,類名可以通過三種方式引用,需要了解一下命名空間名稱定義:

命名空間的實現受到語言自身的動態特徵的影響,有時必須使用完全限定名稱。

常量__namespace__的值是包含當前命名空間名稱的字串。在全域性的,不包括在任何命名空間中的**,它包含乙個空的字串。常量__namespace__在動態建立名稱時很有用。

關鍵字namespace可用來顯式訪問當前命名空間或子命名空間中的元素。它等價於類中的self操作符。

允許通過別名引用或匯入外部的完全限定名稱,類似於在類unix檔案系統中可以建立對其它的檔案或目錄的符號連線。

php命名空間支援兩種別名或匯入方式:

使用use操作符匯入或使用別名,支援一行包含多個use語句。注意對命名空間中的名稱,前導的反斜槓是不必要的也不允許有反斜槓,因為匯入的名稱必須是完全限定的,不會根據當前的命名空間作相對解析。

若未定義任何命名空間,所有的類與函式的定義都是在全域性空間。在名稱前加上字首\,表示該名稱是全域性空間中的名稱。

在命名空間中,當php遇到乙個非限定的類、函式或常量名稱時,將會使用不同的有線策略來解析該名稱。

類名稱總是解析到當前命名空間中的名稱,因此在訪問系統內部或不包含在命名空間中的類名稱時,必須使用完全限定名稱。

對於函式和常量來說,如果當前命名空間中不存在該函式或常量,php 會退而使用全域性空間中的函式或常量。

名稱解析規則文字挺多的,需要具體問題具體分析。

(全文完)

命名空間 PHP手冊筆記

原文 命名空間 php手冊筆記 命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念,比如在作業系統中,目錄用來將相關檔案分組,對於目錄中的檔案來說,目錄就扮演了命名空間的角色。這個原理應用到程式設計領域就是命名空間的概念。php 5.3後的版本開始支援命名空間。命名空間通過關鍵字name...

PHP手冊學習日記 命名空間

學習內容來自php官網手冊 php 手冊 語言參考 命名空間 使用者編寫的 與php內部的類 函式 常量或第三方類 函式 常量之間的名字衝突 為很長的識別符號名稱 通常是為了緩解第一類問題而定義的 建立乙個別名 或簡短 的名稱,提高源 的可讀性 注意 名為php或php的命名空間,以及以這些名字開頭...

PHP命名空間筆記

此篇文章作為我從開始學習php到工作一段時間後的命名空間知識點總結,會隨學習和工作的提高而完善 命名空間 定義命名空間意義 一 為了解決多檔案中 相互引入時 類名,常量名,函式名可能會重複命名的問題 二 快速定位檔案位置 三 就是給檔案加個隱式字首 四 命名空間需要寫在檔案的最前面 全域性空間 如果...