1. 程式人生 > >PHP名稱空間解析規則

PHP名稱空間解析規則

1.對完全限定名的類、函式和常量,在編譯時解析,如類\A\B解析為類A\B。

2.所有的非限定名稱和限定名稱,根據當前的匯入規則在編譯時進行轉換。假設名稱空間A\B\C被匯入為Z,那麼呼叫Z\d()會轉換為A\B\C\d()。

3.在名稱空間內,沒有根據匯入規則轉換的限定名,會在其前面加上當前的名稱空間,如在名稱空間A\B內呼叫C\d(),則會轉換為A\B\C\d()。

4.非限定類名根據當前的匯入規則在編譯時轉換,用完全限定名代替短的匯入名稱。如名稱空間A\B\C匯入為C,那麼new C()被轉換為 new A\B\C()。

5.在名稱空間內部(例如A\B),對非限定名稱的函式

呼叫是在執行時解析的。如呼叫函式foo()時,首先在當前名稱空間查詢\A\B\foo()函式,如果找不到,則會嘗試在全域性名稱空間中查詢\foo()函式。

6.在名稱空間內部(例如A\B),對非限定名稱或限定名稱類的呼叫是在執行時解析的。對於非限定名稱類如new C()會在呼叫時在當前名稱空間中查詢\A\B\C類,如果找不到則嘗試自動裝載類\A\B\C。對於限定名稱類如new C\D()會在呼叫時在類名稱前加上當前名稱空間的名稱變成\A\B\C\D,然後查詢此類,如果找不到則嘗試自動裝載類\A\B\C\D。