piece/stagehand-fsm

v2.6.0 2018-01-17 07:39 UTC

This package is auto-updated.

Last update: 2024-09-23 19:26:55 UTC


README

有限状态机

Total Downloads Latest Stable Version Latest Unstable Version Build Status

Stagehand_FSM 是一个 有限状态机

手动状态管理会使代码复杂,降低代码意图性。通过使用 Stagehand_FSM,状态管理代码可以以有限状态机的形式声明性表示。这使得代码更简单,增加了意图性。

Stagehand_FSM 可以用作 领域特定语言 (DSLs) 的基础设施。例如,如 Workflower 这样的工作流程引擎,以及如 PHPMentorsPageflowerBundle 这样的页面流程引擎。

<?php
use Stagehand\FSM\StateMachine\StateMachineBuilder;

$stateMachineBuilder = new StateMachineBuilder();
$stateMachineBuilder->addState('locked');
$stateMachineBuilder->addState('unlocked');
$stateMachineBuilder->setStartState('locked');
$stateMachineBuilder->addTransition('locked', 'insertCoin', 'unlocked');
$stateMachineBuilder->addTransition('unlocked', 'pass', 'locked');
$stateMachine = $stateMachineBuilder->getStateMachine();

$stateMachine->start();
echo $stateMachine->getCurrentState()->getStateID() . PHP_EOL; // "locked"
$stateMachine->triggerEvent('insertCoin');
echo $stateMachine->getCurrentState()->getStateID() . PHP_EOL; // "unlocked"
$stateMachine->triggerEvent('pass');
echo $stateMachine->getCurrentState()->getStateID() . PHP_EOL; // "locked"

特性

  • 活动(执行动作)
  • 入口动作
  • 退出动作
  • 转换动作
  • 转换日志
  • 守卫
  • 初始伪状态
  • 最终状态
  • 用户定义的有效负载
  • 为状态机事件定义用户事件派发器

安装

Stagehand_FSM 可以使用 Composer 安装。

piece/stagehand-fsm 依赖项添加到您的 composer.json 文件中,如下所示

稳定版本

composer require piece/stagehand-fsm "2.6.*"

开发版本

composer require phpmentors/stagehand-fsm "~3.0@dev"

支持

如果您发现错误或有问题,或者想要请求功能,请在此 问题 上创建问题或拉取请求。

版权

版权 (c) 2006-2008, 2011-2018 KUBO Atsuhiro,保留所有权利。

许可证

BSD 2-Clause 许可证