程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP命名空間(namespace)的動態訪問及使用技巧

PHP命名空間(namespace)的動態訪問及使用技巧

編輯:PHP綜合

PHP的命名空間(namespace)是PHP 5.3中加入最重要的一個新特性,這個概念在C#中已經很早就有了,php中的namespace其實和c#的概念是一樣的。

一.動態訪問命名空間的元素

namespace me\poet;
function test()
{
  echo '1111';
}
$fun = 'test';//不能這麼用,最後$fun()無法動態調用到test():Fatal error: Call to undefined function test()
$fun = '\me\poet\test';//正確
//$fun = 'me\poet\test';//正確
$fun();

也就是說,動態調用必須是 限定名稱 或 完全限定名稱(概念參考:PHP命名空間的使用基礎)


二.魔術常量 和 操作符

namespace me\poet;
function test()
{
  echo '1';
}
echo __NAMESPACE__; //魔術常量:命名空間的名稱(輸出 me\poet)
//namespace操作符:顯式訪問當前命名空間或子命名空間中的元素,等價於類中的self操作符
\me\poet\test();
namespace\test();
//上兩行代碼等價。


三.別名、導入 和 全局空間(含多個例子)

namespace ws\weichen\www;
use ws\weichen\www as poet;//定義別名poet
//use ws\weichen\www; //不加as,則取最後的作為別名(www)
function demo()
{
  echo '1';
}
\ws\weichen\www\demo();
poet\demo();
//www\demo();    //不加as的情況,則這樣調用

以上三行代碼效果一樣。
按規則(ws\weichen\www)命名的好處:若更換域名,只要把前綴名稱改了就可以,不影響後面代碼中別名www的使用。

/* 導入 */
include 'hello.class.php';
use \ws\weichen\www;
use \Hello;
/*--------------------------------------------------------*/
/* 支持多個use語句 */
use \nihao\shijie as hello, \ws\weichen\www;
/*--------------------------------------------------------*/
/* 全局空間:反斜線調用 */
namespace A\B\C;
//這個函數是 A\B\C\fopen();
function fopen()
{
  $f = \fopen('demo.txt');//調用全局fopen函數
  return $f;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved