PHP use關鍵字概述,use關鍵字概述
PHP中的use關鍵字的用法。
很多開源系統如osCommerce架構中,都會在其源碼中找到use這個關鍵字,如osCommerce架構中就在index.php檔案中出現了這段源碼:
use osCommerce\OM\Core\Autoloader;
use osCommerce\OM\Core\OSCOM;
其實,php的use關鍵字是自php5.3以上版本引入的。它的作用是給一個外部參考起別名。這是命名空間的一個重要特性,它同基於unix的檔案系統的為檔案或目錄建立串連標誌相類似。
PHP命名空間支援三種別名方式(或者說引用):
1、為一個類取別名
2、為一個介面取別名
3、為一個命名空間取別名
這三種方式都是用 use 關鍵字來完成。下面是三種別名的分別舉例:
//Example #1 importing/aliasing with the use operator
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
?>
注意的一點是,對於已命名的名字,全稱就包含了分隔字元,比如 Foo\Bar,而不能用FooBar,而“\Foo\Bar”這個頭部的"\"是沒必要的,也不建議這樣寫。引入名必須是全稱,並且跟當前命名空間沒有程式上的關聯。(www.jbxue.com 指令碼學堂)
PHP也可以在同一行上申明多個,等同於上面的寫法
useMy\Full\ClassnameasAnother,My\Full\NSname;
$obj=newAnother;//instantiatesobjectofclassMy\Full\Classname
NSname\subns\func();//callsfunctionMy\Full\NSname\subns\func
?>
還有值得一說的是,引入是在編譯時間執行的,因此,別名不會影響動態類,例如:
useMy\Full\ClassnameasAnother,My\Full\NSname;
$obj=newAnother;//instantiatesobjectofclassMy\Full\Classname
$a = 'Another';
$obj = New $a; // instantiates object of class Another
?>
這裡由於給變數$a 賦值了 'Another',編譯的時候,就將$a 定位到 Classname 了。
更詳細的用法讀者可以查閱php手冊或續相關文章。
php use php namespace 到底是怎一回事
1. namespace Zend\Http\PhpEnvironment;
這句代碼定義了一個命名空間,你可以理解為定義一個名稱為 Zend\Http\PhpEnvironment 的網域名稱。
在定義了之後,下面所申明的class, interface, const等都是在申明的這個“域”裡面的。當引用一個申明了命名空間的包含檔案,想要調用這個裡面的東西,那就必須:
調整當前指令碼也到這個網域名稱裡,否則,就得用namesapce的全稱。
比如,inc.php 檔案:
namespace Zend\Http\PhpEnvironment;
class Bar {}//定義了一個類
則其他檔案調用時:
// 訪問Foo的第一種方法,用全稱
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
// 訪問Foo的第二種方法
namespace Foo; // 調整當前指令碼到Foo這個ns域,而且namespace申明必須在第一句
require 'inc.php';
$foo = new Bar();
2. use關鍵字目的是使用ns的別名:
比如說,上面的
// 訪問Foo的第一種方法,用全稱
require 'inc.php';
$foo = new \Zend\Http\PhpEnvironment\Bar();
用uses後,寫法如下:
use \Zend\Http\PhpEnvironment as pe; //定義別名
$foo = new \pe\Bar(); //用短的別名來代替原來的
如果省略後面的as ....,那麼,就可以直接用最後一節的文字來代替,比如,上面的:
use \Zend\Http\PhpEnvironment; //定義別名
$foo = new \PhpEnvironment\Bar(); //用短的別名來代替原來的
================================================
php官方手冊中的相關內容:
在PHP中,namespace命名空間用來解決在編寫類庫或應用程式時建立可重用的代碼如類或函數時碰到的兩類問題:
1. 使用者編寫的代碼與PHP內部的類/函數/常量或第三方類/函數/常量之間的名字衝突。
2. 為很長的標識符名稱(通常是為了緩解第一類問題而定義的)建立一個別名(或簡短)的名稱,提高原始碼的可讀性。
PHP 命名空間提供了一種將相關的類、函數和常量組合到一起的途徑。
PHP 命名空間支援有兩種使用別名或匯入方式:為類名稱使用別名,或為命名空間名稱使用別名, 別名通過操作符 use 來實現。...餘下全文>>
php中的關鍵字是什?
關鍵字就是棋盤上的棋子,你只可以用,不能改也不能自個往裡加
你想想我把卒子當車使,再擺四個馬跟你下,你幹嗎?
所以PHP也不幹!
不知你是否明白?
參考資料:www.gooddou.cn
http://www.bkjia.com/PHPjc/847129.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/847129.htmlTechArticlePHP use關鍵字概述,use關鍵字概述 PHP中的use關鍵字的用法。 很多開源系統如osCommerce架構中,都會在其源碼中找到use這個關鍵字,如osCommer...