PHP5.3 新特性之"命名空間"介紹

PHP 5.3 的一個新的重要特性就是命名空間(namespace)。

這一特性在 PHP5.0x 時候就提出過,後來被取消並安排在 PHP6 中實現。而此次又再次“提前”到了 PHP5.3 發布,可見開發人員對其的重視以及謹慎的態度。

官方發布時說明文檔的內容可能已過期(documentation maybe out dated),所以在這裏簡單的說明命名空間的用法:首先是聲明一個命名空間,加入了新的關鍵字 namespace ,其應在類文件的開頭

<?phpnamespace Project::Module;class User {const STATUS_OK = true;function register($data) {...}...}然後在控制器中(可能是其他文件)就可以這樣調用

$user = new Project::Module::User();$user->register($register_info);的確與平常的並無兩樣,但是我們可以將兩個相互獨立的類聯系起來。比如

Project::Module::User;Project::Module::Blog;這樣就能從語言本身更容易描述和理解變量、類之間的關系,從而避免了“傳統”上的 Project_Module_Blog 這樣冗長的命名方式。

上面的說明可能很難說明使用命名空間帶來了什麽好處,新增加的 use 和 as 關鍵字或許能更好的說明問題。use 和 as 語句可以引用和聲明 命名空間的“別名”。比如,上述的控制器中實例化類的代碼可以這樣寫

use Project::Module;$user = new Module::User();$user->register($register_info);甚至

use Project::Module::User as ModuleUser;$user = new ModuleUser;$user->register($register_info);類中的常量也可以通過命名空間訪問,比如上述類中的 STATUS_OK 就可以通過命名空間

Project::Module::User::STATUS_OK訪問。進一步的,也可以用別名簡化那麽長的“變量名稱”

use Project::Module::User::STATUS_OK as STATUS_OK;echo STATUS_OK;順便提下“超空間(The Global Namespace)”的概念。所謂的“超空間”,就是沒有指定命名空間的變量、類和函數。比如

function foo() {...}這的函數,可以使用foo()執行的同時,也可以使用::foo();這樣執行。

最後,配合使用autoload函數即可載入指定命名空間的類。簡單的函數如下

function __autoload( $classname ) {$classname = strtolower( $classname );$classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname );require_once( dirname( __FILE__ ) . '/' . $classname . '.class.php' );}這樣,比如調用

__autoload('Project::Module::User');就可以自動載入Project_Module_User.class.php文件(雖然這樣看起來並不方便多少)。

向Visual Basic程序員介紹My命名空間(二)
My.ComputerMy的另一個功能塊是Computer對象。My.Computer對象可以讓你訪問系統底層和應用程序所在硬件平台的信息。示例應用程序的第二個選項卡展示了你在My.Computer對象中能找到的有趣屬性。 圖三My.Computer 選項...查看完整版>>向Visual Basic程序員介紹My命名空間(二)
 
向Visual Basic程序員介紹My命名空間(一)
Excerpted from “Microsoft Visual Basic Programmer’s Introduction to Whidbey” by Sean Campbell, Scott Swigart, Kris Horrocks, Derek Hatchard, and Peter Bernhardt.Publisher, Microsoft Press, ISBN # 0...查看完整版>>向Visual Basic程序員介紹My命名空間(一)
 
PHP5的XML新特性
PHP5的新特性 作者 Christian Stocker 翻譯 ice_berg16(尋夢的稻草人) 面向的讀者 這篇文章的面向對象是所有對PHP5的XML新功能感興趣的各個水平的PHP開發者。我們假定讀者掌握XML的基本知識。然而,如果你已經在你的...查看完整版>>PHP5的XML新特性
 
向Visual Basic程序員介紹My命名空間(二)
My.ComputerMy的另一個功能塊是Computer對象。My.Computer對象可以讓你訪問系統底層和應用程序所在硬件平台的信息。示例應用程序的第二個選項卡展示了你在My.Computer對象中能找到的有趣屬性。 圖三My.Computer 選項...查看完整版>>向Visual Basic程序員介紹My命名空間(二)
 
向Visual Basic程序員介紹My命名空間(一)
Excerpted from “Microsoft Visual Basic Programmer’s Introduction to Whidbey” by Sean Campbell, Scott Swigart, Kris Horrocks, Derek Hatchard, and Peter Bernhardt.Publisher, Microsoft Press, ISBN # 0...查看完整版>>向Visual Basic程序員介紹My命名空間(一)
 
解讀HTML:命名空間與字符編碼
在做項目的過程中,我們經常會建立各種各樣的規範,以方便團隊之間更好的合作更好的完成項目;同樣我們也經常會聽到各種各樣的協議,比如Google的IM軟件Gtalk使用的開放的XMPP協議,只要其他IM軟件也遵循XMPP協議就能...查看完整版>>解讀HTML:命名空間與字符編碼
 
C# 參考之命名空間關鍵字:namespace、using
namespacenamespace 關鍵字用于聲明一個範圍。此命名空間範圍允許您組織代碼並爲您提供了創建全局唯一類型的方法:命名空間名可以是任何合法的標識符。命名空間名可以包含句號。 即使未顯式聲明命名空間,也會創建默認...查看完整版>>C# 參考之命名空間關鍵字:namespace、using
 
第十四節--命名空間
     /*  +-------------------------------------------------------------------------------+  | = 本文爲Haohappy讀<<Core PHP Programming>>  | = 中Classes and Objects一章的筆記  |...查看完整版>>第十四節--命名空間
 
XML指南——XML 命名空間
命名沖突因爲XML文檔中使用的元素不是固定的,那麽兩個不同的XML文檔使用同一個名字來描述不同類型的元素的情況就可能發生。而這種情況又往往會導致命名沖突。請看下面兩個例子這個 XML 文檔在table元素中攜帶了水果...查看完整版>>XML指南——XML 命名空間
 
 
回到王朝網路移動版首頁