[TOC] #### 1. 什么是命名空間 --- **主要作用:解決命名沖突問題** **命名空間是指人為的將內(nèi)存分隔, 讓不同內(nèi)存區(qū)域的同名結(jié)構(gòu)共存。** 文件夾對于文件夾內(nèi)的文件來說就充當了命名空間的角色,兩個文件名相同的文件不同放在同一個文件夾下,但是可以放在不同的文件夾下 #### 2. namespace 關(guān)鍵字聲明命名空間 --- **1. 命名空間第一次聲明必須在所有代碼之前 ** 如果一個文件中包含命名空間, 必須在其他所有代碼之前聲明命名空間 但是 PHP7 嚴格模式(declare)除外, 嚴格模式聲明可以放在聲明命名空間之前 ``` declare(strict_types = 1); ``` **2. 單個文件中可以定義多個命名空間** ``` namespace abc; function var_dump() { echo 'this is abc'; } namespace def; function var_dump() { echo 'this is def'; } var_dump();//this is def ``` **3. 使用大括號在單個文件中定義多個命名空間** 特別注意 : 使用該方式的文件在 `{}` 之外可能不存在任何代碼 ``` namespace abc { function var_dump() { echo '123'; } } namespace def { function var_dump() { echo '456'; } } ``` #### 3. 命名空間名稱的命名規(guī)則 --- 系統(tǒng)關(guān)鍵字不能作為空間名稱, 如: `list、echo` 等 以字母或下劃線開頭, 有字母、下劃線、數(shù)字組成