Skip to content

A Simple PHP Finite State Machine designed for Yii2 framework

License

Notifications You must be signed in to change notification settings

aleskiontherun/yfinite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yFinite

yFinite is a Simple State Machine, written in PHP explicitly for Yii2 framework. It can manage any Stateful object by defining states and transitions between these states.

Installation (via composer)

{
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/dizeee/yfinite"
        }
    ],
    "require": {
        "yiisoft/yii2": ">=2.0.6",
        "dizeee/yfinite": "~0.0"
    }
}

Basic usage

use yfinite\StatefulInterface;
use yfinite\StateMachine;

class Monkey implements StatefulInterface
{
    public $state;
    
    public function getFiniteState()
    {
        return $this->state;
    }

    public function setFiniteState($state)
    {
        $this->state = $state;
    }
}

$monkey = new Monkey;

$machine = new StateMachine($monkey, [
    'defaultStateName' => 'sleeping',
    'states' => [
        'sleeping' => [],
        'eating'   => [],
        'pooping'  => ['properties' => ['smells' => 'bad']],
    ],
    'transitions' => [
        'makeBreakfast' => [
            'from'      => ['sleeping'],
            'stateName' => 'eating',
        ],
        'scareToDeath' => [
            'from'      => ['sleeping', 'eating'],
            'stateName' => 'pooping',
       ],
    ],
]);

$machine->apply('makeBreakfast');

About

A Simple PHP Finite State Machine designed for Yii2 framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages