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