phpmentors / 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
,状态管理代码可以声明性地以 FSM 的形式表示。这使得代码更简单,增加了代码的意图性。
Stagehand_FSM
可以用作 领域特定语言 (DSL) 的基础设施。例如,工作流引擎如 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,保留所有权利。