/** * Applies a transition action given a object and the kind of transition is * needed. * * @param stdClass $object Object * @param StateLineStack $stateLineStack StateLine Stack * @param string $transitionName Transition name * @param string $description Description * @param string $transitionAction Transition Action * * @return StateLineStack StateLine stack given * * @throws StateNotReachableException State is not reachable * @throws ObjectNotInitializedException Object needs to be initialized in machine */ private function applyTransitionAction($object, StateLineStack $stateLineStack, $transitionName, $description, $transitionAction) { $startState = $stateLineStack->getLastStateLine(); if (!$startState instanceof StateLineInterface) { throw new ObjectNotInitializedException(); } /** * @var Transition $transition */ $transition = $this->machine->{$transitionAction}($startState->getName(), $transitionName); $stateLine = $this->createStateLine($transition->getFinal()->getName(), $description); $stateLineStack->addStateLine($stateLine); $this->machineEventDispatcher->dispatchTransitionEvents($this->machine, $object, $stateLineStack, $transition); return $stateLineStack; }
/** * Sets StateLineStack. * * @param StateLineStack $stateLineStack StateLineStack * * @return $this Self object */ public function setStateLineStack(StateLineStack $stateLineStack) { $this->stateLines = $stateLineStack->getStateLines(); $this->lastStateLine = $stateLineStack->getLastStateLine(); return $this; }
/** * Sets ShippingStateLineStack * * @param StateLineStack $shippingStateLineStack ShippingStateLineStack * * @return $this Self object */ public function setShippingStateLineStack(StateLineStack $shippingStateLineStack) { $this->shippingStateLines = $shippingStateLineStack->getStateLines(); $this->shippingLastStateLine = $shippingStateLineStack->getLastStateLine(); return $this; }