silverstripe/closure

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

3.99.99 2023-03-28 21:21 UTC

This package is auto-updated.

Last update: 2024-09-18 03:33:32 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 函数的建议是谨慎使用。