一个简单的 PHP 有限状态机
Finite, A Simple PHP Finite State Machine ========================================= Finite 是一个简单的状态机,使用 PHP 编写。 它可以通过定义状态和这些状态之间的转换来管理任何状态对象。 从版本 2 起,由于使用了 PHP 枚举,Finite 成为一个低依赖和轻量级的状态机库。 特性 ---------- * 管理对象的状态/转换图 * 为状态添加业务逻辑 * 监听状态之间的转换以触发您的域代码 * Symfony 集成 * Twig 扩展 开始使用 ------------ ### 安装(通过 composer) bash $ composer req yohang/finite ### 定义您的状态枚举 ```php
enum DocumentState: string implements State
{
case DRAFT = 'draft';
case PUBLISHED = 'published';
case REPORTED = 'reported';
case DISABLED = 'disabled';
public static function getTransitions(): array
{
return [
new Transition('publish', [self::DRAFT], self::PUBLISHED),
new Transition('clear', [self::REPORTED, self::DISABLED], self::PUBLISHED),
new Transition('report', [self::PUBLISHED], self::REPORTED),
new Transition('disable', [self::REPORTED, self::PUBLISHED], self::DISABLED),
];
}
}
您的状态对象只需要有一个状态属性暂无开放 Issues,或尚未同步最近议题。