php namespace的用法:【namespace Article;】,表示建立一個名為Article的命名空間。要注意的是,目前腳本檔案的第一個命名空間前面不能有任何程式碼。
命名空間一個最明確的目的就是解決重名問題,PHP中不允許兩個函數或類別出現相同的名字,否則會產生一個致命的錯誤。這種情況只要避免命名重複就可以解決,最常見的做法就是約定一個前綴。
(推薦教學:php影片教學)
命名空間將程式碼分割出不同的空間(區域),每個空間的常數、函數、類別(為了偷懶,我下邊都稱它們為元素)的名字互不影響, 這個有點類似我們常常提到的'封裝'的概念。
建立一個命名空間需要使用namespace關鍵字,這樣:
<?php //创建一个名为'Article'的命名空间 namespace Article; ?>
要注意的是,目前腳本檔案的第一個命名空間前面不能有任何程式碼,下面的寫法都是錯誤的:
例一
//在脚本前面写了一些逻辑代码 <?php $path = "/"; class Comment { } namespace Article; ?>
例二
</html> <?php namespace Article; ?>
為什麼要說第一個命名空間呢?因為在同一腳本檔案中可以建立多個命名空間。
下面我創建了兩個命名空間,順便為這兩個空間各自添加了一個Comment類別元素:
<?php //创建一个名为'Article'的命名空间 namespace Article; //此Comment属于Article空间的元素 class Comment { } //创建一个名为'MessageBoard'的命名空间 namespace MessageBoard; //此Comment属于MessageBoard空间的元素 class Comment { } ?>
在不同空間之間不可以直接呼叫其它元素,需要使用命名空間的語法:
<?php namespace Article; class Comment { } namespace MessageBoard; class Comment { } //调用当前空间(MessageBoard)的Comment类 $comment = new Comment(); //调用Article空间的Comment类 $article_comment = new \Article\Comment(); ?>
可以看到,在MessageBoard空間中呼叫article空間裡的Comment類別時,使用了一個像檔案路徑的語法: \空間名稱\元素名稱
除了類別之外,對函數和常數的用法是一樣的,下面我為兩個空間創建了新的元素,並在MessageBoard空間中輸出了它們的值。
<?php namespace Article; const PATH = '/article'; function getCommentTotal() { return 100; } class Comment { } namespace MessageBoard; const PATH = '/message_board'; function getCommentTotal() { return 300; } class Comment { } //调用当前空间的常量、函数和类 echo PATH; ///message_board echo getCommentTotal(); //300 $comment = new Comment(); //调用Article空间的常量、函数和类 echo \Article\PATH; ///article echo \Article\getCommentTotal(); //100 $article_comment = new \Article\Comment(); ?>
然後我的確得到了Article空間的元素資料。
相關推薦:php培訓
以上是php namespace的用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!