glowingblue / closure
一个可用于序列化闭包(匿名函数)和任意对象的库。
3.6.3-patch.2
2023-05-31 12:24 UTC
Requires
- php: ^5.4 || ^7.0 || ^8.0
Requires (Dev)
- jeremeamia/superclosure: ^2.0
- nesbot/carbon: *
- phpunit/phpunit: ^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0
Replaces
- opis/closure: *
This package is not auto-updated.
Last update: 2024-09-19 16:58:46 UTC
README
可序列化的闭包
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 Closure 的 2.x
版本。否则,假设您没有使用已删除/重构的类或功能(请参阅 变更日志),迁移到 3.x
版本只需更新您的 composer.json
文件。
语义版本化
Opis Closure 遵循 语义版本化 规范。
任意对象序列化
我们添加这个功能是为了能够支持闭包绑定对象的序列化。实现远未完美,要让它无瑕疵地工作非常困难。我们将努力改进这一点,但不能保证任何事。因此,关于 Opis\Closure\serialize|unserialize
函数的建议是谨慎使用。