PHP中的use關(guān)鍵字概述
很多開源系統(tǒng)如osCommerce框架中,都會在其源碼中找到use這個(gè)關(guān)鍵字,如osCommerce框架中就在index.php文件中出現(xiàn)了這段源碼:
use osCommerce\OM\Core\Autoloader; use osCommerce\OM\Core\OSCOM;
其實(shí),php的use關(guān)鍵字是自php5.3以上版本引入的。它的作用是給一個(gè)外部引用起別名。這是命名空間的一個(gè)重要特性,它同基于unix的文件系統(tǒng)的為文件或目錄創(chuàng)建連接標(biāo)志相類似。
PHP命名空間支持三種別名方式(或者說引用):
1、為一個(gè)類取別名
2、為一個(gè)接口取別名
3、為一個(gè)命名空間取別名
這三種方式都是用 use 關(guān)鍵字來完成。下面是三種別名的分別舉例:
//Example #1 importing/aliasing with the use operator
<?php namespacefoo; useMy\Full\ClassnameasAnother; //thisisthesameasuseMy\Full\NSnameasNSname useMy\Full\NSname; //importingaglobalclass useArrayObject; $obj=newnamespace\Another;//instantiatesobjectofclassfoo\Another $obj=newAnother;//instantiatesobjectofclassMy\Full\Classname NSname\subns\func();//callsfunctionMy\Full\NSname\subns\func $a=newArrayObject(array(1));//instantiatesobjectofclassArrayObject //withoutthe"useArrayObject"wewouldinstantiateanobjectofclassfoo\ArrayObject ?>
注意的一點(diǎn)是,對于已命名的名字,全稱就包含了分隔符,比如 Foo\Bar,而不能用FooBar,而“\Foo\Bar”這個(gè)頭部的"\"是沒必要的,也不建議這樣寫。引入名必須是全稱,并且跟當(dāng)前命名空間沒有程序上的關(guān)聯(lián)。
PHP也可以在同一行上申明多個(gè),等同于上面的寫法
<?php useMy\Full\ClassnameasAnother,My\Full\NSname; $obj=newAnother;//instantiatesobjectofclassMy\Full\Classname NSname\subns\func();//callsfunctionMy\Full\NSname\subns\func ?>
還有值得一說的是,引入是在編譯時(shí)執(zhí)行的,因此,別名不會影響動(dòng)態(tài)類,例如:
<?php useMy\Full\ClassnameasAnother,My\Full\NSname; $obj=newAnother;//instantiatesobjectofclassMy\Full\Classname $a = 'Another'; $obj = New $a; // instantiates object of class Another ?>
這里由于給變量$a 賦值了 'Another',編譯的時(shí)候,就將$a 定位到 Classname 了。
更詳細(xì)的用法讀者可以查閱php手冊或關(guān)注本站后續(xù)相關(guān)文章。
相關(guān)文章
PHP的substr_replace將指定兩位置之間的字符替換為*號
PHP的substr_replace將指定兩位置之間的字符替換為*號的代碼,需要的朋友可以參考下。2011-05-05PHPwind整合最土系統(tǒng)用戶同步登錄實(shí)現(xiàn)方法
我的任務(wù)就是讓PHPWind和最土登錄同步,領(lǐng)導(dǎo)也知道我的技術(shù)能力有限,不怎么高要求,所以讓我先實(shí)現(xiàn),再考慮其他。趕鴨子上架,開工了。2010-12-12