|
php的命名空間(namespace)是php 5.3中加入最重要的一個(gè)新特性,這個(gè)概念在C#中已經(jīng)很早就有了,php中的namespace其實(shí)和c#的概念是一樣的。
一.動(dòng)態(tài)訪問命名空間的元素
namespace me/poet;function test(){ echo '1111';}$fun = 'test';//不能這么用,最后$fun()無法動(dòng)態(tài)調(diào)用到test():Fatal error: Call to undefined function test()$fun = '/me/poet/test';//正確//$fun = 'me/poet/test';//正確$fun();
也就是說,動(dòng)態(tài)調(diào)用必須是 限定名稱 或 完全限定名稱(概念參考:php命名空間的使用基礎(chǔ))
二.魔術(shù)常量 和 操作符
namespace me/poet;function test(){ echo '1';}echo __NAMESPACE__; //魔術(shù)常量:命名空間的名稱(輸出 me/poet)//namespace操作符:顯式訪問當(dāng)前命名空間或子命名空間中的元素,等價(jià)于類中的self操作符/me/poet/test();namespace/test();//上兩行代碼等價(jià)。
三.別名、導(dǎo)入 和 全局空間(含多個(gè)例子)
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的情況,則這樣調(diào)用
以上三行代碼效果一樣。
按規(guī)則(ws/weichen/www)命名的好處:若更換域名,只要把前綴名稱改了就可以,不影響后面代碼中別名www的使用。
/* 導(dǎo)入 */include 'hello.class.php';use /ws/weichen/www;use /Hello;/*--------------------------------------------------------*//* 支持多個(gè)use語句 */use /nihao/shijie as hello, /ws/weichen/www;/*--------------------------------------------------------*//* 全局空間:反斜線調(diào)用 */namespace A/B/C;//這個(gè)函數(shù)是 A/B/C/fopen();function fopen(){ $f = /fopen('demo.txt');//調(diào)用全局fopen函數(shù) return $f;}
php技術(shù):PHP命名空間(namespace)的動(dòng)態(tài)訪問及使用技巧,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。