命名空间

命名空间

从广义上来说,命名空间是一种封装事物的方法

PHP 命名空间可以解决以下两类问题

  1. 用户编写的代码与PHP内部的类/函数/常量第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

命名空间通过关键字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();
}
原文地址:https://www.cnblogs.com/1014852131qq/p/14101483.html