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 框架 1.1_名稱空間PHP框架
- 20200109 - 名稱空間
- python名稱空間Python
- vuex名稱空間Vue
- 使用p名稱空間和c名稱空間的XML快捷方式XML
- 一篇弄懂PHP名稱空間及use的使用PHP
- 15-名稱空間
- Python名稱空間包Python
- 11. 名稱空間
- ts---名稱空間
- C++名稱空間C++
- PHP名稱空間與自動載入簡述PHP
- spring框架中的名稱空間Spring框架
- Python中名稱空間是什麼?名稱空間生命週期是多久?Python
- PHP名稱空間與PSR-4自動載入PHP
- ros節點名稱空間ROS
- Kubernetes 名稱空間入門
- 3-1 名稱空間
- 什麼是名稱空間?
- Python作用域和名稱空間Python
- System.Security.Cryptography 名稱空間
- c++系列:匿名名稱空間C++
- Kubernetes 的層級名稱空間介紹
- 內聯和巢狀名稱空間巢狀
- Python中名稱空間包簡介Python
- OpenCV 名稱空間學習筆記OpenCV筆記
- 瞭解下C# 名稱空間(Namespace)C#namespace
- C++系列: 巢狀名稱空間C++巢狀
- 對名稱空間的一點個人理解
- js 實現鏈式呼叫名稱空間JS
- yaml檔案中在哪加名稱空間?YAML