php namespace的用法

2020-09-28 12:01:07

php namespace的用法:【namespace Article;】,表示建立一個名為Article的名稱空間。需要注意的是,當前指令碼檔案的第一個名稱空間前面不能有任何程式碼。

名稱空間一個最明確的目的就是解決重名問題,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 namespace的用法的詳細內容,更多請關注TW511.COM其它相關文章!