PHP命名空间
一种封装事物的方法,原理类似于操作系统中使用目录来对文件分组
解决问题
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
定义
<?php
namespace MyProject ; // 所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前(declare 语句除外)
// 只有类,函数,常量的代码受命名空间的影响
const CONNECT_OK = 1 ;
class Connection { /* ... */ }
function connect () { /* ... */ }
全局空间
如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,与 PHP 引入命名空间概念前一样。
在名称前加上前缀 \ 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。
多层命名空间
<?php
namespace MyProject \ Sub \ Level ; // 定义的分层次的命名空间,对应相应的目录结构
const CONNECT_OK = 1 ;
class Connection { /* ... */ }
function connect () { /* ... */ }
多命名空间
在实际的编程实践中,将多个 PHP 脚本合并在同一个文件中(非常不提倡在同一个文件中定义多个命名空间)
<?php
namespace MyProject {
const CONNECT_OK = 1 ;
class Connection { /* ... */ }
function connect () { /* ... */ }
}
// 使用两个大括号分隔
namespace AnotherProject {
const CONNECT_OK = 1 ;
class Connection { /* ... */ }
function connect () { /* ... */ }
}
// 如果不指定命