

PHP中的命名空间与use语句
命名空间的作用是防止出现在同名的函数或类或常量,避免名称冲突,还有就是为很长的标识符创建别名
命名空间用namespace关键字来声明,命名空间必须写到所有代码的最前面,只有用定义编码的语句可以写到它的最前面
同一个文件中可以有多个命名空间,命名空间可以用括号括起来,也可以不用括号,但建议加括号,例:
<?php
namespace MyProject { //这里也可以不加括号,但不建议这样做
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace AnotherProject { //这里也可以不加括号,但不建议这样做
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
?>
一个页面中定义有命名空间代码,也有不属于命名空间的全局代码时,两者都有用关键字namespace和{}括起来,命名空间还必须有名称,例:
<?php
declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码
namespace MyProject { //命名空间的代码用关键字+空间名+括号
const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */ }
}
namespace { // 该页面不属于命令空间的全局代码用关键字+括号
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>
****子命名空间
<?php
namespace MyProject\Sub\Level; //声明分层次的单个命名空间,与目录和文件关系很像,但它并不代表路径,只用来分层次,
const CONNECT_OK = 1; //这里创建了常量MyProject\Sub\Level\CONNECT_OK
class Connection { /* ... */ } //这里创建了类MyProject\Sub\Level\Connection
function Connect() { /* ... */ }//这里创建了函数MyProject\Sub\Level\Connecti()
?>
命名空间的使用