See the definition of Finite-state machine on Wikipedia
Add this library to your project by composer:
composer require "phwoolcon/fsm"
<?php
use Phwoolcon\Fsm\StateMachine;
$fsm = StateMachine::create([
'foo' => [
'process' => 'bar',
],
'bar' => [
'process2' => 'hello',
'process3' => 'world',
],
]);
echo $fsm->getCurrentState(); // prints foo
echo $fsm->next(); // prints bar
echo $fsm->do('process2'); // prints hello