(PHP 5 >= 5.3.0, PHP 7, PHP 8)
什么是命名空間?從廣義上來說,命名空間是一種封裝事物的方法。在很多地方都可以見到這種抽象概念。例如,在操作系統(tǒng)中目錄用來將相關(guān)文件分組,對于目錄中的文件來說,它就扮演了命名空間的角色。具體舉個例子,文件
foo.txt
可以同時在目錄 /home/greg
和
/home/other
中存在,但在同一個目錄中不能存在兩個
foo.txt
文件。另外,在目錄 /home/greg
外訪問
foo.txt
文件時,我們必須將目錄名以及目錄分隔符放在文件名之前得到
/home/greg/foo.txt
。這個原理應(yīng)用到程序設(shè)計領(lǐng)域就是命名空間的概念。
在 PHP 中,命名空間用來解決在編寫類庫或應(yīng)用程序時創(chuàng)建可重用的代碼如類或函數(shù)時碰到的兩類問題:
PHP 命名空間提供了一種將相關(guān)的類、函數(shù)和常量組合到一起的途徑。下面是一個說明 PHP 命名空間語法的示例:
示例 #1 命名空間語法示例
<?php
namespace my\name; // 參考 "定義命名空間" 小節(jié)
class MyClass {}
function myfunction() {}
const MYCONST = 1;
$a = new MyClass;
$c = new \my\name\MyClass; // 參考 "全局空間" 小節(jié)
$a = strlen('hi'); // 參考 "使用命名空間:后備全局函數(shù)/常量" 小節(jié)
$d = namespace\MYCONST; // 參考 "namespace操作符和__NAMESPACE__常量” 小節(jié)
$d = __NAMESPACE__ . '\MYCONST';
echo constant($d); // 參考 "命名空間和動態(tài)語言特征" 小節(jié)
?>
注意: 命名空間名稱大小寫不敏感。
注意:
名為
PHP
的命名空間,以及以這些名字開頭的命名空間 (例如PHP\Classes
)被保留用作語言內(nèi)核使用, 而不應(yīng)該在用戶空間的代碼中使用。