phpmentors/stagehand-fsm

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

This package is auto-updated.

Last update: 2024-09-23 19:43:34 UTC


README

有限状态机

Total Downloads Latest Stable Version Latest Unstable Version Build Status

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,保留所有权利。

许可证

BSD 2-Clause 许可证