PHP 命名空間是 PHP 5.3 版本引入的重要特性,其概念類似於 C# 的命名空間。簡單來說,命名空間就像是一個虛擬目錄,將程式碼封裝在特定的空間內,避免類別、函數、常數命名衝突。
/*
|---------------------------------
| 命名空間示例
| @作者
|---------------------------------
*/
namespace myself;
function var_dump() {
echo 100;
}
var_dump(); // 呼叫自訂函數(相對路徑)
\myself\var_dump(); // 呼叫自訂函數(絕對路徑)
\var_dump(100); // 呼叫全域(系統內建)函數
注意事項:
namespace 宣告必須是檔案中的第一行程式碼(除 declare() 外)。namespace \myself\good,對應多層目錄結構。雖然語法允許,但實務上不建議在同一檔案定義多個命名空間,主要用於合併多個腳本的特殊場景。
namespace nihao\shijie;
function demo() { /* ... */ }
namespace hello\world;
function test() { /* ... */ }
\nihao\shijie\demo();
\hello\world\test();
namespace nihao\shijie {
function test_one() { /* ... */ }
}
namespace hello\world {
function test_two() { /* ... */ }
}
\nihao\shijie\test_one();
\hello\world\test_two();
| 類型 | 說明 | 範例 |
|---|---|---|
| 非限定名稱 | 不含命名空間分隔符 | myself |
| 限定名稱 | 含命名空間分隔符 | nihao\shijie |
| 完全限定名稱 | 以分隔符開頭,表示絕對路徑 | \nihao\shijie |
善用命名空間能有效組織大型專案代碼,避免命名污染,是現代 PHP 開發的基礎技能。