glowingblue/closure

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

3.6.3-patch.2 2023-05-31 12:24 UTC

This package is not auto-updated.

Last update: 2024-09-19 16:58:46 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 ClosureMIT 许可证 (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 版本。否则,假设您没有使用已删除/重构的类或功能(请参阅 变更日志),迁移到 3.x 版本只需更新您的 composer.json 文件。

语义版本化

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

任意对象序列化

我们添加这个功能是为了能够支持闭包绑定对象的序列化。实现远未完美,要让它无瑕疵地工作非常困难。我们将努力改进这一点,但不能保证任何事。因此,关于 Opis\Closure\serialize|unserialize 函数的建议是谨慎使用。