php名稱空間namespace使用筆記

akbarken發表於2013-12-11

php在5.3+的版本加入了名稱空間的元素,類似java裡的包,使用名稱空間,可以很好的避免方法名、類名出現重複。

定義一個名稱空間

1 namespace test;

這樣在這個名稱空間定義的方法、類,都隸屬這個名稱空間,甚至在名稱空間內定義的方法、類可以和php內建的方法、類同名。

名稱空間定義方法

1 namespace test;
2  
3 function getName(){
4     echo 'tom';
5 }
6  
7 getName();  //同一個名稱空間可以直接呼叫
8 \test\getName();  //其他名稱空間要這樣呼叫

我用的是netbeans,所以打一個\,就彈出提示框,這邊test就是剛才定義的名稱空間了。如下圖

netbeans名稱空間程式碼提示

netbeans名稱空間程式碼提示

定義一個方法和php內建的方法同名

strlen是php內建的方法,但是在test名稱空間內,也可以定義。如果在名稱空間內要呼叫php內建的方法,使用\符號就可以了,看下面程式碼:

1 namespace test;
2 function strlen($str){ }
3  
4 strlen('tom');  //這裡呼叫的是test名稱空間的方法
5 \test\strlen('tom');  //同上
6 \strlen('tom');  //這裡呼叫的是php內建的方法

多重新命名空間

名稱空間也支援多重新命名空間,例如:

1 namespace test\test2;
2  
3 function getName() {
4     echo 'anny';
5 }
6  
7 \test\test2\getName(); //輸出anny

使用命名空感覺確實方便了不少,只要確定了名稱空間,就不用擔心和其他人協同開發專案時定義的方法,類名出現重複。zend framework 2也廣泛使用名稱空間了。


相關文章