1、命名空間概述從廣義上來說,命名空間是一種封裝事物的方法 。
2、好處用戶編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字沖突

文章插圖
為很長的標識符名稱(通常是為了緩解第一類問題而定義的)創建一個別名(或簡短)的名稱,提高源代碼的可讀性
3、影響范圍類(包括抽象類和traits)、接口、函數和常量
4、解析規則 4.1、命名空間名稱定義非限定名稱Unqualified name
名稱中不包含命名空間分隔符的標識符,例如 Foo
限定名稱Qualified name
名稱中含有命名空間分隔符的標識符,例如 Foo\Bar
完全限定名稱Fully qualified name
名稱中包含命名空間分隔符 , 并以命名空間分隔符開始的標識符 , 例如 \Foo\Bar 。namespace\Foo 也是一個完全限定名稱 。
4.2、名稱解析遵循下列規則
對完全限定名稱的函數,類和常量的調用在編譯時解析 。例如 new \A\B 解析為類 A\B 。
所有的非限定名稱和限定名稱(非完全限定名稱)根據當前的導入規則在編譯時進行轉換 。例如,如果命名空間 A\B\C 被導入為 C,那么對 C\D\e() 的調用就會被轉換為 A\B\C\D\e() 。
在命名空間內部,所有的沒有根據導入規則轉換的限定名稱均會在其前面加上當前的命名空間名稱 。例如,在命名空間 A\B 內部調用 C\D\e(),則 C\D\e() 會被轉換為 A\B\C\D\e()。
非限定類名根據當前的導入規則在編譯時轉換(用全名代替短的導入名稱) 。例如,如果命名空間 A\B\C 導入為C,則 new C() 被轉換為 new A\B\C()。
在命名空間內部(例如A\B),對非限定名稱的函數調用是在運行時解析的 。例如對函數 foo() 的調用是這樣解析的:
在當前命名空間中查找名為 A\B\foo() 的函數
嘗試查找并調用 全局(global) 空間中的函數 foo() 。
在命名空間(例如A\B)內部對非限定名稱或限定名稱類(非完全限定名稱)的調用是在運行時解析的 。下面是調用 new C() 及 new D\E() 的解析過程: new C()的解析:
在當前命名空間中查找A\B\C類 。
嘗試自動裝載類A\B\C 。
new D\E()的解析:
在類名稱前面加上當前命名空間名稱變成:A\B\D\E,然后查找該類 。
嘗試自動裝載類 A\B\D\E 。
為了引用全局命名空間中的全局類,必須使用完全限定名稱 new \C() 。
5、具體操作使用spl_autoload_register函數設置一個加載器
【php命名空間 php空間命名】使用關鍵字use 引入類到執行文件中
- 方向|當你感到困惑和意外時,你應該學會給自己的心留點空間
- 飛多高|你給孩子多少空間,孩子就能飛多高
- 隱私|OPPO手機設置的隱藏照片在哪?oppo手機隱藏空間在哪里
- AirPodsPro|AirPodsPro空間音頻 空間音頻是什么意思
- 保存|“超溫柔”的QQ空間置頂短句,可鹽可甜不撞風,電量1也要保存
- 汽車洋蔥圈■后排空間堪比D級車的SUV,中期改款后又有哪些驚喜?
- 心靈之音的空間■原創 一個男人口口聲聲說讓我嫁給他,卻舍不得給我花錢,我該答應嗎?
- 「蕓簡育空間」別害怕你并不孤單;接納自己,才是消除社交恐懼的最好辦法
- 【你家】做到這3點,你家廚房空間也能擴容一倍
- 10:10招告別壓抑小空間,房間立馬變高大
