Metabor\Statemachine\Util\StateCollectionMerger::mergeState PHP Method

mergeState() protected method

protected mergeState ( MetaborStd\Statemachine\StateInterface $sourceState )
$sourceState MetaborStd\Statemachine\StateInterface
    protected function mergeState(StateInterface $sourceState)
    {
        $name = $sourceState->getName();
        $targetState = $this->findOrCreateState($name);
        $this->mergeMetadata($sourceState, $targetState);
        /* @var $transition TransitionInterface */
        foreach ($sourceState->getTransitions() as $sourceTransition) {
            $targetTransition = $this->createTransition($sourceTransition);
            $this->addTransition($targetState, $targetTransition);
        }
        foreach ($sourceState->getEventNames() as $eventName) {
            $sourceEvent = $sourceState->getEvent($eventName);
            $targetEvent = $targetState->getEvent($eventName);
            $this->mergeMetadata($sourceEvent, $targetEvent);
            foreach ($sourceEvent->getObservers() as $observer) {
                $targetEvent->attach($observer);
            }
        }
    }