php名稱空間的呼叫順序
1、完全限定函式、類和常量的呼叫將會在編譯的時候解析。例如,newaB解析為類aB。
2、所有的非限定名稱和限定名稱(非完全限定名稱),根據當前的匯入規則在編譯的時候進行轉換。例如,如果名稱空間 ABC 被匯入為 C,那麼對 CDe() 的呼叫就會被轉換為 ABCDe()。
3、所有非限定名和限定名(非完全限定名)都在編譯時根據當前匯入規則進行轉換。例如,如果名稱空間aBC作為C匯入,則對CDe()的呼叫將轉換為aBCDe()。
4、非限定類名在編譯時根據當前匯入規則進行轉換(將短匯入名替換為全名)。例如,如果名稱空間aBC作為C匯入,則新的C()將轉換為新的aBC()。
在名稱空間(例如,ab)中,對非限定名稱的函式呼叫在執行時解析。
對名稱空間(如ab)內的非限定名或限定名類(非完全限定名)的呼叫在執行時解析。以下是呼叫new c()和new de()的解析過程:解析new c():
new DE()的解析:
為了引用全域性名稱空間中的全域性類,必須使用完全限定名稱 new C()。
例項
namespace A; use BD, CE as F; // 函式呼叫 foo(); // 首先嚐試呼叫定義在名稱空間"A"中的函式foo() // 再嘗試呼叫全域性函式 "foo" foo(); // 呼叫全域性空間函式 "foo" myfoo(); // 呼叫定義在名稱空間"Amy"中函式 "foo" F(); // 首先嚐試呼叫定義在名稱空間"A"中的函式 "F" // 再嘗試呼叫全域性函式 "F" // 類引用 new B(); // 建立名稱空間 "A" 中定義的類 "B" 的一個物件 // 如果未找到,則嘗試自動裝載類 "AB" new D(); // 使用匯入規則,建立名稱空間 "B" 中定義的類 "D" 的一個物件 // 如果未找到,則嘗試自動裝載類 "BD" new F(); // 使用匯入規則,建立名稱空間 "C" 中定義的類 "E" 的一個物件 // 如果未找到,則嘗試自動裝載類 "CE" new B(); // 建立定義在全域性空間中的類 "B" 的一個物件 // 如果未發現,則嘗試自動裝載類 "B" new D(); // 建立定義在全域性空間中的類 "D" 的一個物件 // 如果未發現,則嘗試自動裝載類 "D" new F(); // 建立定義在全域性空間中的類 "F" 的一個物件 // 如果未發現,則嘗試自動裝載類 "F" // 呼叫另一個名稱空間中的靜態方法或名稱空間函式 Bfoo(); // 呼叫名稱空間 "AB" 中函式 "foo" B::foo(); // 呼叫名稱空間 "A" 中定義的類 "B" 的 "foo" 方法 // 如果未找到類 "AB" ,則嘗試自動裝載類 "AB" D::foo(); // 使用匯入規則,呼叫名稱空間 "B" 中定義的類 "D" 的 "foo" 方法 // 如果類 "BD" 未找到,則嘗試自動裝載類 "BD" Bfoo(); // 呼叫名稱空間 "B" 中的函式 "foo" B::foo(); // 呼叫全域性空間中的類 "B" 的 "foo" 方法 // 如果類 "B" 未找到,則嘗試自動裝載類 "B" // 當前名稱空間中的靜態方法或函式 AB::foo(); // 呼叫名稱空間 "AA" 中定義的類 "B" 的 "foo" 方法 // 如果類 "AAB" 未找到,則嘗試自動裝載類 "AAB" AB::foo(); // 呼叫名稱空間 "A" 中定義的類 "B" 的 "foo" 方法 // 如果類 "AB" 未找到,則嘗試自動裝載類 "AB" ?>
以上就是php名稱空間的呼叫順序,希望對大家有所幫助。更多php學習指路:
本文轉載於php中文網,如有侵犯聯絡作者修改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4662/viewspace-2828705/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP 名稱空間PHP
- PHP名稱空間PHP
- PHP 核心特性 - 名稱空間PHP
- PHP名稱空間概念解析PHP
- 物件導向 -- 類的載入順序 類和物件的名稱空間物件
- PHP 獲取不帶名稱空間的類名PHP
- PHP名稱空間(Namespace)的使用詳解PHPnamespace
- PHP 物件導向 (三)名稱空間PHP物件
- 【 PHP 學習筆記 】名稱空間PHP筆記
- [ PHP 學習筆記 ] 名稱空間PHP筆記
- php名稱空間namespace使用筆記PHPnamespace筆記
- 名稱空間
- JAXB名稱空間及名稱空間字首處理
- 自研 PHP 框架 1.1_名稱空間PHP框架
- vuex名稱空間Vue
- jQuery 名稱空間jQuery
- JavaScript 名稱空間JavaScript
- 使用p名稱空間和c名稱空間的XML快捷方式XML
- [10] 名稱空間擴充套件和鏈式呼叫套件
- JavaScript 中的名稱空間JavaScript
- Python 的名稱空間Python
- 一篇弄懂PHP名稱空間及use的使用PHP
- 對於PHP中名稱空間概念的入門理解PHP
- python名稱空間Python
- C++名稱空間C++
- 更改模型名稱空間模型
- 全域性名稱空間
- C++ 名稱空間C++
- Python 名稱空間Python
- 11. 名稱空間
- ts---名稱空間
- PHP名稱空間與自動載入簡述PHP
- PHP名稱空間及自動載入淺析PHP
- Objective-C 的名稱空間Object
- mac os 工作空間 桌面順序Mac
- Spring名稱空間解析Spring
- 使用名稱空間:基礎
- ros節點名稱空間ROS