命名空間概述

(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ù)時碰到的兩類問題:

  1. 用戶編寫的代碼與PHP內(nèi)部的類/函數(shù)/常量或第三方類/函數(shù)/常量之間的名字沖突。
  2. 為很長的標(biāo)識符名稱(通常是為了緩解第一類問題而定義的)創(chuàng)建一個別名(或簡短)的名稱,提高源代碼的可讀性。

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)該在用戶空間的代碼中使用。