PHP命名空間解析規則
命名空間名稱定義
非限定名稱Unqualified name
<code>名称中不包含命名空间分隔符的标识符,例如Foo
</code>
登入後複製
限定名稱Qualified name
<code>名称中含有命名空间分隔符的标识符,例如:Foo\Bar
</code>
登入後複製
名稱的函數,類別和常數的呼叫在編譯時解析。例如 new AB 解析為類別 AB。
所有的非限定名稱和限定名稱(非完全限定名稱)根據目前的導入規則在編譯時進行轉換。例如,如果命名空間 ABC 被匯入為 C,那麼對 CDe() 的呼叫就會被轉換為 ABCDe()。
在命名空間內部,所有的沒有根據導入規則轉換的限定名稱都會在其前面加上目前的命名空間名稱。例如,在命名空間 AB 內部呼叫 CDe(),則 CDe() 會轉換為 ABCDe()。 - 非限定類別名稱根據目前的導入規則在編譯時轉換(以全名取代短的導入名稱)。例如,如果命名空間 ABC 導入為C,則 new C() 會轉換為 new ABC()。
- 在命名空間內部(例如AB),對非限定名稱的函數呼叫是在運行時解析的。例如對函數 foo() 的呼叫是這樣解析的:
-
- 在當前命名空間中尋找名為 ABfoo() 的函數
- 嘗試尋找並呼叫 全域(global) 空間中的函數 foo()。
-
- 在命名空間(例如AB)內部對非限定名稱或限定名稱類別(非完全限定名稱)的呼叫是在運行時解析的。以下是呼叫 new C() 及 new DE() 的解析過程:
new C()的解析:
-
在目前命名空間中尋找ABC類別;
- 嘗試自動裝載類別ABC。
- new DE()的解析:
在類別名稱前面加上目前命名空間名稱變成:ABDE,然後找出該類別
- 嘗試自動裝載類別 ABDE。
- 為了引用全域命名空間中的全域類,必須使用完全限定名稱 new C()。
名稱解析範例
<code>名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如:\Foo\Bar.
namespace\Foo 也是一个完全限定名称。
</code>
登入後複製
').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
以上就介紹了PHP命名空間解析規則,包含了靜態方法的內容,希望對PHP教學有興趣的朋友有幫助。