[TOC] #### 1. 什么是命名空间 --- **主要作用:解决命名冲突问题** **命名空间是指人为的将内存分隔, 让不同内存区域的同名结构共存。** 文件夹对于文件夹内的文件来说就充当了命名空间的角色,两个文件名相同的文件不同放在同一个文件夹下,但是可以放在不同的文件夹下 #### 2. namespace 关键字声明命名空间 --- **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. 命名空间名称的命名规则 --- 系统关键字不能作为空间名称, 如: `list、echo` 等 以字母或下划线开头, 有字母、下划线、数字组成