PHP 名稱空間
PHP 名稱空間
名稱空間解決了兩個不同的問題
- 它們可以透過分組執行同一任務的類來更好地組織程式碼
- 它們允許使用相同的名稱來命名多個類
例如,您可能有一組描述 HTML 表的類,例如 Table、Row 和 Cell,同時還有另一組描述傢俱的類,例如 Table、Chair 和 Bed。可以使用名稱空間將這些類組織到兩個不同的組中,同時防止兩個同名的 Table 類混淆。
宣告一個名稱空間
名稱空間在檔案開頭使用 `namespace` 關鍵字宣告
語法
宣告一個名為 Html 的名稱空間
<?php
namespace Html;
?>
注意: `namespace` 宣告必須是 PHP 檔案中的第一條語句。以下程式碼將是無效的
<?php
echo "Hello World!";
namespace Html;
...
?>
在此檔案中宣告的常量、類和函式將屬於 Html 名稱空間
示例
在 Html 名稱空間中建立一個 Table 類
<?php
namespace Html;
class Table {
public $title = "";
public $numRows = 0;
public function message() {
echo "<p>Table '{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
自己動手試一試 »
為了進一步組織,可以擁有巢狀的名稱空間
語法
在 Code 名稱空間內宣告一個名為 Html 的名稱空間
<?php
namespace Code\Html;
?>
使用名稱空間
任何跟在 `namespace` 宣告之後的程式碼都將在該名稱空間內執行,因此可以直接例項化屬於該名稱空間的類,而無需任何限定符。要訪問名稱空間之外的類,類需要附加名稱空間。
當同時使用同一名稱空間中的許多類時,使用 `namespace` 關鍵字會更方便
示例
在不需要 Html\ 限定符的情況下使用 Html 名稱空間中的類
<?php
namespace Html;
$table = new Table();
$row = new Row();
?>
自己動手試一試 »
命名空間別名
為了方便書寫,為名稱空間或類起一個別名會很有用。這可以透過 `use` 關鍵字來實現