命名空间与use关键词批量声明

目录:

  • 测试数据

  • 基础的写法(复杂)

  • 可读性高的写法(简明许多)

  • php7 的写法(更加清晰)

    • 非混合模式的use声明

    • 混合模式的use声明

    • 复合模式的use声明

测试数据

注意:测试目录及其命名没有按照标准规范定义目录,定义文件名及命名空间,只为展示php新特征而临时数据。

注意:加载类的方式有两种:⑴通过类似include等显示要加载类。⑵通过 __autoload 函数来加载所有的类文件,这里只为测试所以使用了第一种方式

以下libs目录文件中定义了类、函数、常量,均在Includes\Codee命名空间下。

libs目录
libs/mysql.php
libs/mysqli.php
libs/pdo.php
libs/file.php
libs/constants.php
libs/functions.php
index.php
  • mysql.php

  • mysqli.php

  • pdo.php

  • file.php

  • constants.php

  • functions.php

基础的写法(复杂):

  • index.php

可读性高的写法(简明许多):

注意:PHP 5.6.0发布 use关键字可导入函数与常量

在这段代码中,我通过命名空间中的PHP声明来显示引入很多的类、函数、常量。这种方法依然需要很多行复杂的代码才能表明我们希望用到的类、函数、常量等,这导致在文件中需要些很多的use声明,显得繁琐。

为了解决这个问题,PHP7引入了批量的use声明,下面列举三种use声明的模式。

php7 的写法:

  • 非混合模式的use声明

  • 混合模式的use声明

  • 复合模式的use声明

非混合模式的use声明

假设命名空间里多种类型的资源,例如类、函数、常量等,使用费混合模式的use声明,可以按照类型将它们归类后逐个用use声明。代码如下

这里只修改了use代码,其他的不变

混合模式的use声明

在这种声明方式中,将同一个命名空间下的内容合并在一起,使用一次use关键字完成全部声明,代码如下

复合模式的use声明

举例:有一个Mysql类位于Includes\Code\Cache命名空间下,有一个File类位于Includes\Code\Index命名空间下,还有两个位于Includes\Code\Data命名空间下,那么此时,若需要use声明,代码如下

这样的声明看上去更清晰,不必写太多的命名空间信息。

Last updated