命名空间
从广义上来说,命名空间是一种封装事物的方法
PHP 命名空间可以解决以下两类问题:
- 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
- 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
命名空间通过关键字namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。语法格式如下;
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。
单个文件中定义多个命名空间。建议使用下面的大括号形式的语法。
命名空间中的常量使用const关键词进行定义;
__NANESPACE__当前命名空间的名称(区分大小写)
将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来,
子命名空间
与目录和文件的关系很象,PHP 命名空间也允许指定层次化的命名空间的名称。因此,命名空间的名字可以使用分层次的方式定义:
命名空间的使用:
三种方式引用:
1、非限定名称:会根据当前命名空间解析。
2、限定名称:如果当前命名空间是myproject,则mypro1aa()为myprojectmypro1aa();
3、完全限定名称:使用开头 myprojectmypro1Y;
命名空间的引入和别名
1、使用use操作符导入别名;
2、一行包含多个use语句;
// 声明命名空间 文件夹
namespace Admin{
$aa = 100;
function aa(){
echo 'aaaa';
}
aa();
function trim(){
echo 'aa';
}
trim();
}
namespace Aa{
$n = 1110;
function aa(){
echo 'bbb';
}
}
// 声明命名空间
namespace Admin{
//定义常量
const ABC = 1;
// 函数
function aa(){
echo 'aaaaa';
}
function trim(){
echo 'aa';
}
}
// 全局命名空间
namespace{
// 使用admin命名空间下的aa函数
Adminaa();
}