alamote /

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

3.6.1 2024-06-18 13:00 UTC

This package is auto-updated.

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