/** * Return compiled machine * * @return Machine Machine instance */ public function getMachine() { $transitionChain = TransitionChain::create(); $transitionChain->addTransition(new Transition('pay', new State('unpaid'), new State('paid')))->addTransition(new Transition('revise', new State('unpaid'), new State('revised')))->addTransition(new Transition('ship', new State('revised'), new State('shipped'))); $machine = new Machine('id', $transitionChain, 'unpaid'); return $machine; }
/** * Compile transitions and return structure compiled. * * @param array $configuration Configuration * * @return TransitionChain Transition chain compiled */ private function compileTransitions(array $configuration) { $transitionChain = TransitionChain::create(); foreach ($configuration as $transitionConfiguration) { list($startStateName, $transitionName, $finalStateName) = $transitionConfiguration; $startState = new State($startStateName); $finalState = new State($finalStateName); $transition = new Transition($transitionName, $startState, $finalState); $transitionChain->addTransition($transition); } return $transitionChain; }