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.json
文件中
{“要求”:{“opis/closure”:“^3.5”} }
如果您的项目需要支持 PHP 5.3,您可以继续使用2.x
版本的Opis Closure 。否则,假设您没有使用已删除/重构的类或功能之一(请参阅更改日志),则迁移到版本3.x
只需更新您的composer.json
文件即可。
Opis Closure遵循语义版本控制规范。
我们添加此功能是为了能够支持闭包绑定对象的序列化。实现远非完美,要让它完美无瑕地工作确实很困难。我们会尽力改进这一点,但我们不能保证任何事情。因此,我们关于OpisClosureserialize|unserialize
函数的建议是谨慎使用它们。