關於php命名空間的理解

2022-08-09 11:45:15 字數 958 閱讀 5608

理解命名空間首先要知道命名空間的作用,也就是它的出現解決了那些問題

官方給出的解決的問題是:

使用者編寫的**與php內部的類/函式/常量或第三方類/函式/常量之間的名字衝突。

為很長的識別符號名稱(通常是為了緩解第一類問題而定義的)建立乙個別名(或簡短)的名稱,提高源**的可讀性。

可以看下這篇文章:

從thinkphp5.0開始,遵循psr-4自動載入規範,只需要給類庫正確定義所在的命名空間,並且命名空間的路徑與類庫檔案的目錄一致,那麼就可以實現類的自動載入,從而實現真正的惰性載入。

以phpmailer這個類庫為例,composer自動載入好該類庫,有用的檔案都放在src這個目錄下

這些檔案的命名空間都是這個:namespace phpmailer\phpmailer;

如果我們要使用phpmailer這個類,需要use phpmailer\phpmailer\phpmailer;所以檔名要和類名一致(但是如果乙個檔案裡有多個類應該如何使用,所以在乙個檔案中盡量不要定義多個類)

命名空間與檔案的路徑有時可能不一樣,這個就是,phpmailer的類檔案路徑是phpmailer\phpmailer\src\phpmailer.php,命名空間卻是phpmailer\phpmailer,這是因為在composer載入時就對命名空間與路徑進行了繫結,如下圖:

關於php的命名空間的理解

什麼是命名空間以及如何定義命名空間 一般情況向,在乙個php程式源 檔案或同乙個請求中是不允許有兩個以上相同名稱的類名 常量名或者函式名的,這樣的話,程式在執行的時候就會報錯。但是,在很多實際情況下,我們是無法避免在同乙個檔案下有兩個以上相同名稱的類名 常量名或者函式名的。這種情況下就需要引入命名空...

php命名空間的理解

命名空間概述這是只是大概講一下用法,如果想詳細了解,還是閱讀官方手冊比較好。什麼是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在作業系統中目錄用來將相關檔案分組,對於目錄中的檔案來說,它就扮演了命名空間的角色。具體舉個例子,檔案 foo.txt 可以...

對PHP命名空間的理解

最早的php是沒有命名空間的,所有php 存在同乙個命名空間之下,這樣的話就不能存在相同的類或者相同的函式。但是當我們的工程越來越大的時候,由此產生的衝突會越來越多。php5.3之後增加了對命名空間的支援,宣告命名空間名使用namespace 名稱,宣告必須在整個 之前。命名空間解決了我們多個檔案使...