00x0 前言

每次审有命名空间的代码都感觉很蛋疼 所以有了这篇文章
为了保证可读性这次用一下小标题 虽然我个人比较讨厌这种写法

0x01 命名空间介绍

命名空间在PHP5.3.0中引入,其作用是按照一种虚拟的层次结构组织PHP代码,这种层次结构类似操作系统中文件系统的目录结构。命名空间是现代PHP组件生态的基础,现代的PHP组件框架代码都是放在各自全局唯一的厂商命名空间中,以免和其他厂商使用的常见类名冲突。

  • 以laravel的代码为例(立个flag明天一定把国赛那道反序列化的链审出来),

    在第三行声明了Illuminate\Http的命名空间
    类似于C语言的变量声明 当一个页面只使用一个命名空间时,命名空间 的声明必须放在所有执行代码之前
  • 子命名空间用于组织项目代码,声明于顶层命名空间之后,用\连接
    类似于虚拟的文件夹,所以可以把命名空间理解为类的虚拟文件夹
    当我们使用命名空间时,可以省去复杂的包含语句,直接导入类

00x2 导入

在导入时使用use语句 例如
use Illuminate\Http\Response;
这个语句导入了一个Illuminate\Http空间下的Response类
在导入之后新建对象可以直接使用名字 不需要加命名空间
在PHP5.6之后还可以导入函数和常量
use func导入函数
use constant导入常量
使用use ..... as语句可以取一个别名

00x3 在一个php文件中使用多个命名空间

需要在声明命名空间之后用大括号把这个命名空间的内容括进去

<?php
namespace Foo {
    //声明类、接口、函数、常量
}
namespace Bar {
    //声明类、接口、函数、常量
}
分类: 技术

0 条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注