laravel / serializable-closure
Laravel Serializable Closure 提供了一种简单且安全的方式在 PHP 中序列化闭包。
v1.3.4
2024-08-02 07:48 UTC
Requires
- php: ^7.3|^8.0
Requires (Dev)
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
- nesbot/carbon: ^2.61|^3.0
- pestphp/pest: ^1.21.3
- phpstan/phpstan: ^1.8.2
- symfony/var-dumper: ^5.4.11|^6.2.0|^7.0.0
README
介绍
本项目是优秀项目 opis/closure: 3.x 的分支。在 Laravel,我们决定分支这个包,因为即将推出的版本 4.x 是基于 FFI 扩展 的完全重写。由于 Laravel 是一个 Web 框架,而 FFI 默认不在 Web 请求中启用,这个分支使我们能够在支持新 PHP 版本的同时继续使用
3.x
系列。
Laravel Serializable Closure 提供了一种简单且安全的方式在 PHP 中 序列化闭包。
官方文档
安装
需要 PHP 7.4+
首先,通过 Composer 包管理器安装 Laravel Serializable Closure
composer require laravel/serializable-closure
用法
您可以通过这种方式序列化闭包
use Laravel\SerializableClosure\SerializableClosure; $closure = fn () => 'james'; // Recommended SerializableClosure::setSecretKey('secret'); $serialized = serialize(new SerializableClosure($closure)); $closure = unserialize($serialized)->getClosure(); echo $closure(); // james;
注意事项
- 闭包中不能创建匿名类。
- 闭包中不能使用属性。
- 不支持在 Laravel Tinker 等交互式环境(REPL)中序列化闭包。
- 不支持序列化引用具有只读属性的对象的闭包。
贡献
感谢您考虑为 Serializable Closure 做贡献!贡献指南可以在 Laravel 文档 中找到。
行为准则
为了确保 Laravel 社区对所有成员都是开放的,请阅读并遵守 行为准则。
安全漏洞
请查阅 我们的安全策略,了解如何报告安全漏洞。
许可
Serializable Closure 是在 MIT 许可下开源的软件,许可证详情请见 LICENSE.md。