PHP基礎(chǔ)之命名空間6——使用別名和導(dǎo)入
允許通過別名引用或?qū)胪獠康耐耆薅Q,是命名空間的一個重要特征。這有點類似于在類 unix 文件系統(tǒng)中可以創(chuàng)建對其它的文件或目錄的符號連接。
PHP 命名空間支持有兩種使用別名或?qū)敕绞剑簽轭惷Q使用別名,或為命名空間名稱使用別名。注意PHP不支持導(dǎo)入函數(shù)或常量。
在PHP中,別名是通過操作符?use?來實現(xiàn)的。下面是一個使用所有可能的三種導(dǎo)入方式的例子:
Example #1 使用use操作符導(dǎo)入/使用別名
<?php namespace foo; use MyFullClassname as Another; // 下面的例子與 use MyFullNSname as NSname 相同 use MyFullNSname; // 導(dǎo)入一個全局類 use ArrayObject; $obj = new namespaceAnother; // 實例化 fooAnother 對象 $obj = new Another; // 實例化 MyFullClassname 對象 NSnamesubnsfunc(); // 調(diào)用函數(shù) MyFullNSnamesubnsfunc $a = new ArrayObject(array(1)); // 實例化 ArrayObject 對象 // 如果不使用 'use ArrayObject' ,則實例化一個 fooArrayObject 對象?>
注意對命名空間中的名稱(包含命名空間分隔符的完全限定名稱如?FooBar以及相對的不包含命名空間分隔符的全局名稱如?FooBar)來說,前導(dǎo)的反斜杠是不必要的也不允許有反斜杠,因為導(dǎo)入的名稱必須是完全限定的,不會根據(jù)當前的命名空間作相對解析。
為了簡化操作,PHP還支持在一行中使用多個use語句
Example #2 通過use操作符導(dǎo)入/使用別名,一行中包含多個use語句
<?php use MyFullClassname as Another, MyFullNSname; $obj = new Another; // 實例化 MyFullClassname 對象 NSnamesubnsfunc(); // 調(diào)用函數(shù) MyFullNSnamesubnsfunc?>
導(dǎo)入操作是在編譯執(zhí)行的,但動態(tài)的類名稱、函數(shù)名稱或常量名稱則不是。
Example #3 導(dǎo)入和動態(tài)名稱
<?php use MyFullClassname as Another, MyFullNSname; $obj = new Another; // 實例化一個 MyFullClassname 對象 $a = ’Another’; $obj = new $a; // 實際化一個 Another 對象?>
另外,導(dǎo)入操作只影響非限定名稱和限定名稱。完全限定名稱由于是確定的,故不受導(dǎo)入的影響。
Example #4 導(dǎo)入和完全限定名稱
<?php use MyFullClassname as Another, MyFullNSname; $obj = new Another; // 實例化MyFullClassname類的對象 $obj = new Another; // 實例化Another類的對象 $obj = new Anotherthing; // 實例化MyFullClassnamething類的對象 $obj = new Anotherthing; // 實例化Anotherthing類的對象 ?>
相關(guān)文章:
1. Spring security 自定義過濾器實現(xiàn)Json參數(shù)傳遞并兼容表單參數(shù)(實例代碼)2. Java8內(nèi)存模型PermGen Metaspace實例解析3. python學(xué)習(xí)之plot函數(shù)的使用教程4. python wsgiref源碼解析5. 一文搞懂 parseInt()函數(shù)異常行為6. python 實現(xiàn)關(guān)聯(lián)規(guī)則算法Apriori的示例7. ASP.NET MVC使用正則表達式驗證手機號碼8. python 實現(xiàn)"神經(jīng)衰弱"翻牌游戲9. python tkinter實現(xiàn)下載進度條及抖音視頻去水印原理10. Python基于百度AI實現(xiàn)抓取表情包
