tarfin-labs / event-machine

一个为PHP设计的基于事件的有限状态机库,它提供了一种表达性语言来定义和管理应用程序状态,使得开发者可以轻松且易于维护地创建复杂的流程。

1.6.0 2024-09-04 13:55 UTC

This package is auto-updated.

Last update: 2024-09-04 13:56:18 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

EventMachine是一个用于创建和管理基于事件的有限状态机的PHP库。它设计得简单易用,同时提供了强大的功能来管理复杂的状态转换。这个库深受流行的JavaScript状态机库XState的影响。

安装

您可以通过composer安装此包

composer require tarfin-labs/event-machine

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --tag="event-machine-migrations"
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="event-machine-config"

这是已发布配置文件的内容

return [
];

使用方法

$machine = MachineDefinition::define(
        config: [
            'initial' => 'green',
            'context' => [
                'value' => 1,
            ],
            'states' => [
                'green' => [
                    'on' => [
                        'TIMER' => [
                            [
                                'target'     => 'yellow',
                                'guards' => 'isOneGuard',
                            ],
                            [
                                'target'     => 'red',
                                'guards' => 'isTwoGuard',
                            ],
                            [
                                'target' => 'pedestrian',
                            ],
                        ],
                    ],
                ],
                'yellow'     => [],
                'red'        => [],
                'pedestrian' => [],
            ],
        ],
        behavior: [
            'guards' => [
                'isOneGuard' => function (ContextManager $context, array $event): bool {
                    return $context->get('value') === 1;
                },
                'isTwoGuard' => function (ContextManager $context, array $event): bool {
                    return $context->get('value') === 2;
                },
            ],
        ],
    );

测试

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请参阅我们的安全策略以了解如何报告安全漏洞。

致谢

许可协议

MIT许可协议(MIT)。请参阅许可文件以获取更多信息。