在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
从PHP5.3.0开始引入命名空间的概念,那么命名空间是什么、为什么要使用命名空间、怎么使用命名空间呢?下面就给大家简单的讲解一下,相信读完这篇文章大家能对命名空间有比较清楚的认识。 命名空间是现代PHP特性之一,从PHP5.3.0开始引入,其作用是将PHP代码按照一种虚拟的层次结构进行组织,这种结构类似于操作系统中文件系统的目录结构。下面看一个例子
虽然命名空间类似于操作系统的物理文件系统,但有本质的不同。命名空间是一种虚拟的概念,没必要和文件系统中的目录结构完全相同。例如 User 在命名空间 App\Model 中, 但真实的文件目录却是 app\User.php 并没有 model 目录。 不过为了兼容PSR-4自动加载标准,一般都会把命名空间放到对应的文件系统的目录中。可以说命名空间的为现代PHP生态系统和基于组件的新型架构的实现奠定了坚实的基础。 二、为什么要使用命名空间在通常的PHP开发中,除了使用自己的代码以外,往往会使用很多其他的PHP组件。这些组件代码可能会使用相同的类名、接口名、函数或者常量名等,如果不使用命名空间就会导致命名冲突,使PHP执行出错。而将代码放到各自唯一的命名空间中,我们的代码就可以和其他开发者使用相同的类名、接口名、函数或者常量名等,这在团队合作中相当重要。 在引入第三方组件依赖时,命名空间往往说明了开发此组件的厂商或组织。例如 在laravel框架中 TokenGuard 就位于厂商命名空间 Illuminate 中。 三、怎么使用命名空间1、声明命名空间声明命名空间:在<?php 后的第一行声明,声明语句以 namespace 开头,随后是一个空格,然后是命名空间的名称,最后以 ;结尾。
通常命名空间的开头用于设置顶层厂商名,这个例子中设置厂商名为 Wilin 。在这个命名空间声明语句后声明的所有PHP类、接口、函数和常量等都在 Wilin 命名空间中。如果在该命名空间下想要组织代码,可以使用子命名空间,只要使用 \ 把命名空间和子命名空间分开就好了。例如:
这个命名空间中的类、接口、函数和常量等都在 Wilin\Model 命名空间中。
2、全局命名空间如果在当前的命名空间中引用的类、接口、函数和常量没有指定命名空间,PHP则会认为它处于全局命名空间中。在命名空间中引用全局的代码时需要在类、接口、函数或常量前加 \ 符号。例如原生的Exception类: 3、三种名称术语
下面给出具体例子: 4、导入&别名上述 一、 中的 User 的全名是 App\Model\User ,如果我们想在其他地方使用这个类就要把全名写出来,而导入可以解决这个问题。 导入是指使用 use 关键字告诉PHP我们想使用哪个命名空间、类、接口、函数和常量,导入以后就不用再写全名了。例如: 如果这样类名还是长或者想给该类另起一个名字,可以使用 as 来创建别名。将上图中第12行和17行分别改成下面这样既可。
如果想要在PHP文件中导入多个类、接口、函数或常量,需要在PHP文件的顶部使用多个use语句,PHP支持用简短的语法把多个use语句写成一行。例如:
写成
不过这样可读性差,还是一行写一个use语句比较好。 |
2022-08-17
2022-09-18
2022-08-17
2022-07-29
2022-08-15
请发表评论