TP框架中命名空間

2021-08-07 17:42:34 字數 2510 閱讀 5117

3.2版本全面採用命名空間方式定義和載入類庫檔案,有效的解決多個模組之間的衝突問題,並且實現了更加高效的類庫自動載入機制。

命名空間的概念必須了解,否則會成為3.2版本開發的重大障礙。

如果不清楚什麼是命名空間,可以參考php手冊:php命名空間

由於新版完全採用了命名空間的特性,因此只需要給類庫正確定義所在的命名空間,而命名空間的路徑與類庫檔案的目錄一致,那麼就可以實現類的自動載入。 例如,org\util\file類的定義為:

namespace

org\util

;class

file

其所在的路徑是thinkphp/library/org/util/file.class.php,因此,如果我們例項化該類的話:

$class 

=new

\org\util\file

();

系統會自動載入thinkphp/library/org/util/file.class.php檔案。

注意:和3.1不同,我們無需在例項化命名空間定義的類之前匯入類庫檔案了。

根命名空間是乙個關鍵的概念,以上面的org\util\file類為例,org就是乙個根命名空間,其對應的初始命名空間目錄就是系統的類庫目錄(thinkphp/library),library目錄下面的子目錄會自動識別為根命名空間,這些命名空間無需註冊即可使用。

例如,我們在library目錄下面新增乙個my根命名空間目錄,然後定義乙個test類如下:

namespace

my;class

test

}

test類儲存在thinkphp/library/my/test.class.php,我們就可以直接例項化和呼叫:

$test 

=new

\my\test

();$test

->

sayhello

();

模組中的類庫命名空間的根都是以模組名命名,例如:

namespace

home

\model

;class

usermodel

extends

\think\model

namespace

admin

\event

;class

userevent

3.2.1版本以上的話,允許設定對應用類庫不使用命名空間,你在配置檔案中進行如下設定:

=>

false,

那麼,所有的應用類庫不再需要使用命名空間定義,但繼承和呼叫核心類和系統類的時候,仍然需要使用命名空間,例如:

class

usermodel

extends

\think\model

特別注意:如果你需要在3.2版本中例項化php內建的類庫或者第三方的沒有使用命名空間定義的類,需要採用下面的方式:

$class 

=new

\stdclass

();$sxml

=new

\******xmlelement

($xmlstr

);

tp框架中的命名空間

首先是我對命名空間的理解,命名空間相當於乙個空間,拿班級做比方,不同的班級就是不同的空間,每個班級都有叫小明的同學,但是不會因為有兩個小明而產生矛盾。這就是命名空間的作用 同乙個請求裡面,相同函式,類名,常亮不能出現多次 function chat echo demo changliang 訪問元素...

tp框架中的根命名空間

根命名空間是乙個關鍵的概念,例如 think cache driver file類為例,think就是乙個根命名空間,其對應的初始命名空間目錄就是系統的類庫目錄 thinkphp library think 我們可以簡單的理解乙個根命名空間對應了乙個類庫包 分析 載入loader類 require ...

TP 空間命名

命名空間 thinkphp5 採用命名空間方式定義和自動載入類庫檔案,有效的解決了多模組和 composer 類庫之間的命名空間衝突問題,並且實現了更加高效的類庫自動載入機制。特別注意的是,如果你需要呼叫php內建的類庫,或者第三方沒有使用命名空間的類庫,在這裡插入 片 特別注意的是,如果你需要呼叫...