Finite\Loader\ArrayLoader::loadTransitions PHP Method

loadTransitions() private method

private loadTransitions ( Finite\StateMachine\StateMachineInterface $stateMachine )
$stateMachine Finite\StateMachine\StateMachineInterface
    private function loadTransitions(StateMachineInterface $stateMachine)
    {
        $resolver = new OptionsResolver();
        $resolver->setRequired(array('from', 'to'));
        $resolver->setDefaults(array('guard' => null, 'configure_properties' => null, 'properties' => array()));
        $resolver->setAllowedTypes('configure_properties', array('null', 'callable'));
        $resolver->setNormalizer('from', function (Options $options, $v) {
            return (array) $v;
        });
        $resolver->setNormalizer('guard', function (Options $options, $v) {
            return !isset($v) ? null : $v;
        });
        $resolver->setNormalizer('configure_properties', function (Options $options, $v) {
            $resolver = new OptionsResolver();
            $resolver->setDefaults($options['properties']);
            if (is_callable($v)) {
                $v($resolver);
            }
            return $resolver;
        });
        foreach ($this->config['transitions'] as $transition => $config) {
            $config = $resolver->resolve($config);
            $stateMachine->addTransition(new Transition($transition, $config['from'], $config['to'], $config['guard'], $config['configure_properties']));
        }
    }