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