/** * @param TransitionInterface $sourceTransition * * @throws \InvalidArgumentException * * @return \Metabor\Statemachine\Transition */ protected function createTransition(TransitionInterface $sourceTransition) { $targetStateName = $sourceTransition->getTargetState()->getName(); $targetState = $this->findOrCreateState($targetStateName); $this->mergeMetadata($sourceTransition->getTargetState(), $targetState); $eventName = $sourceTransition->getEventName(); if ($sourceTransition->getConditionName()) { if ($sourceTransition instanceof Transition) { $condition = $sourceTransition->getCondition(); } else { throw new \InvalidArgumentException('Overwrite this method to implement a different type!'); } } else { $condition = null; } return new Transition($targetState, $eventName, $condition); }
/** * @param TransitionInterface $sourceTransition * @return ConditionInterface */ protected function createCondition(TransitionInterface $sourceTransition) { if ($sourceTransition->getConditionName()) { if ($sourceTransition instanceof Transition) { $condition = $sourceTransition->getCondition(); } else { throw new \InvalidArgumentException('Overwrite this method to implement a different type!'); } } else { $condition = null; } return $condition; }