reagordi/serializable-closure

Reagordi 可序列化闭包提供了一种简单安全的方式来在 PHP 中序列化闭包。

1.0.0 2024-05-01 15:24 UTC

This package is auto-updated.

Last update: 2024-09-09 23:30:43 UTC


README

Reagordi

Reagordi 可序列化闭包


Latest Stable Version Total Downloads Build status Code Coverage

Mutation testing badge

static analysis type-coverage psalm-level

Reagordi 可序列化闭包提供了一种简单安全的方式来在 PHP 中序列化闭包。

要求

  • PHP 8.2 或更高版本。

安装

可以使用 composer 安装此包

composer require reagordi/serializable-closure

一般使用

您可以按这种方式序列化闭包

use Reagordi\Component\SerializableClosure\SerializableClosure;

$closure = fn () => 'james';

// Recommended
SerializableClosure::setSecretKey('secret');

$serialized = serialize(new SerializableClosure($closure));
$closure = unserialize($serialized)->getClosure();

echo $closure(); // james;

注意事项

  • 在闭包内无法创建匿名类。
  • 在闭包内无法使用属性。
  • 不支持在 Laravel Tinker 等交互式环境(REPL)中序列化闭包。
  • 不支持序列化引用具有只读属性的对象的闭包。

测试

单元测试

该包使用 PHPUnit 进行测试。要运行测试

./vendor/bin/phpunit

突变测试

该包的测试使用 Infection 突变框架以及 Infection 静态分析插件 进行检查。要运行它

./vendor/bin/roave-infection-static-analysis-plugin

静态分析

代码使用 Psalm 进行静态分析。要运行静态分析

./vendor/bin/psalm

代码风格

使用 Rector 使代码库遵循某些特定规则,或者使用最新的或任何特定版本的 PHP

./vendor/bin/rector

依赖关系

使用 ComposerRequireChecker 检测传递性的 Composer 依赖。

许可证

Reagordi 可序列化闭包是自由软件。它根据 BSD 许可证发布。有关更多信息,请参阅 LICENSE

Reagordi Group 维护。

支持项目

Open Collective

关注更新

Official website Telegram