piece / stagehand-fsm
有限状态机
v2.6.0
2018-01-17 07:39 UTC
Requires
- php: >=5.3.3
- phpmentors/domain-kata: ~1.4
- symfony/event-dispatcher: ~2.8|~3.0|~4.0
Requires (Dev)
- phake/phake: ~2.3
- phpunit/phpunit: ~4.8
README
有限状态机
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,保留所有权利。