opis/closure

一个可以用于序列化闭包(匿名函数)和任意对象的库。

安装次数: 201,022,207

依赖项: 259

建议者: 10

安全: 0

星标: 2,495

关注者: 26

分支: 81

开放问题: 17

3.6.3 2022-01-27 09:35 UTC

README

Tests Latest Stable Version Latest Unstable Version License

可序列化的闭包

Opis Closure 是一个库,旨在通过提供包装器来克服 PHP 在闭包序列化方面的限制,使其所有闭包可序列化。

库的主要特性

  • 序列化任何闭包
  • 序列化任意对象
  • 闭包序列化或反序列化不使用 eval
  • 适用于支持闭包的任何 PHP 版本
  • 支持 PHP 7 语法
  • 处理 use() 中引用/导入的所有变量,并自动包装所有引用/导入的闭包以进行适当的序列化
  • 处理递归闭包
  • 处理类似 __FILE____DIR____LINE____NAMESPACE____CLASS____TRAIT____METHOD____FUNCTION__ 的魔法常量。
  • 自动解析闭包内部使用的所有类名、函数名和常量名
  • 使用 #trackme 指令跟踪闭包的驻留源
  • 简单且非常快速的解析器
  • 可以在执行反序列化的闭包时捕获并妥善处理可能发生的任何错误或异常
  • 您可以无限次地序列化/反序列化任何闭包,即使是之前已反序列化的闭包(这是因为不使用 eval() 进行反序列化)
  • 处理静态闭包
  • 支持加密签名闭包
  • 提供反映器,可以提供有关序列化闭包的信息
  • 提供用于 SuperClosure 库的分析器
  • 自动检测闭包的作用域和/或绑定对象是否需要序列化,以便在反序列化后闭包可以正常工作

文档

本库的完整文档可以在 这里 找到。

许可

Opis Closure 使用 MIT 许可证 (MIT)

要求

  • PHP ^5.4 || ^7.0 || ^8.0

安装

Opis Closure 可在 Packagist 上找到,并且可以通过使用 Composer 从命令行界面进行安装。

composer require opis/closure

或者,您可以直接将其引用到您的 composer.json 文件中作为依赖项

{
    "require": {
        "opis/closure": "^3.5"
    }
}

从 2.x 迁移

如果您的项目需要支持 PHP 5.3,您可以继续使用 Opis Closure2.x 版本。否则,假设您没有使用已删除/重构的类或功能(请参阅 CHANGELOG),迁移到版本 3.x 只是更新您的 composer.json 文件的问题。

语义版本化

Opis Closure 遵循 语义版本化 规范。

任意对象序列化

我们添加此功能是为了能够支持闭包绑定对象的序列化。实现还远未完善,使其完美无缺非常困难。我们将尝试改进它,但不能保证任何东西。因此,关于 Opis\Closure\serialize|unserialize 函数的建议是谨慎使用。