piece/stagehand-fsm

A finite state machine

Installs: 1 736

Dependents: 4

Stars: 13

Watchers: 3

Forks: 2

Open Issues: 1

Language: PHP

v2.3.0 2015-02-18 03:58 UTC

README

A finite state machine

Total Downloads Latest Stable Version Latest Unstable Version Build Status

Stagehand_FSM is a finite state machine.

Manual state management makes code complex, decreases intentionality. By using Stagehand_FSM, state management code can be declaratively represented in the form of FSM. This makes code simpler, increases intentionality.

Stagehand_FSM can be used as an infrastructure for domain-specific languages (DSLs). Examples are workflow engines, pageflow engines such as 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"

Features

  • Activities (do actions)
  • Entry actions
  • Exit actions
  • Transition actions
  • Transition logging
  • Guards
  • Initial pseudo state
  • Final state
  • User-defined payload
  • User-defined event dispatcher for the state machine events

Installation

Stagehand_FSM can be installed using Composer.

Add the dependency to piece/stagehand-fsm into your composer.json file as the following:

composer require piece/stagehand-fsm "~2.4@dev"

Support

If you find a bug or have a question, or want to request a feature, create an issue or pull request for it on Issues.

Copyright

Copyright (c) 2006-2008, 2011-2015 KUBO Atsuhiro, All rights reserved.

License

The BSD 2-Clause License