定義命名空間

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

雖然任意合法的 PHP 代碼都可以包含在命名空間中,但只有以下類型的代碼受命名空間的影響,它們是:類(包括抽象類和 trait)、接口、函數(shù)和常量。

命名空間通過關(guān)鍵字 namespace 來聲明。如果一個(gè)文件中包含命名空間,它必須在其它所有代碼之前聲明命名空間,除了一個(gè)以外:declare關(guān)鍵字。

示例 #1 聲明單個(gè)命名空間

<?php
namespace MyProject;

const 
CONNECT_OK 1;
class 
Connection /* ... */ }
function 
connect() { /* ... */  }

?>

注意: 完全限定名稱(就是以反斜杠開頭的名稱)不能用于命名空間的聲明。 因?yàn)樵摻Y(jié)構(gòu)會(huì)解析成相對(duì)命名空間表達(dá)式。

在聲明命名空間之前唯一合法的代碼是用于定義源文件編碼方式的 declare 語句。另外,所有非 PHP 代碼包括空白符都不能出現(xiàn)在命名空間的聲明之前:

示例 #2 聲明單個(gè)命名空間

<html>
<?php
namespace MyProject// 致命錯(cuò)誤 - 命名空間必須是程序腳本的第一條語句
?>

另外,與 PHP 其它的語言特征不同,同一個(gè)命名空間可以定義在多個(gè)文件中,即允許將同一個(gè)命名空間的內(nèi)容分割存放在不同的文件中。