Metabor\Statemachine\Util\SetupHelper::findOrCreateTransition PHP Method

findOrCreateTransition() public method

public findOrCreateTransition ( string $sourceStateName, string $targetStateName, string $eventName = null, MetaborStd\Statemachine\ConditionInterface $condition = null ) : MetaborStd\Statemachine\TransitionInterface
$sourceStateName string
$targetStateName string
$eventName string
$condition MetaborStd\Statemachine\ConditionInterface
return MetaborStd\Statemachine\TransitionInterface
    public function findOrCreateTransition($sourceStateName, $targetStateName, $eventName = null, ConditionInterface $condition = null)
    {
        $sourceState = $this->findOrCreateState($sourceStateName);
        $targetState = $this->findOrCreateState($targetStateName);
        $transition = $this->findTransition($sourceState, $targetState, $eventName, $condition);
        if (!$transition) {
            $transition = $this->createTransition($sourceState, $targetState, $eventName, $condition);
            $this->addTransition($sourceState, $transition);
        }
        return $transition;
    }

Usage Example

 /**
  *
  */
 public function testFiltersStatesThatHaveTransitionsWithoutAnEvent()
 {
     $eventName = 'event';
     $stateCollection = new StateCollection();
     $helper = new SetupHelper($stateCollection);
     $helper->findOrCreateTransition('foo', 'bar', $eventName);
     $helper->findOrCreateTransition('bar', 'baz', null, new Tautology('condition'));
     $filter = new FilterStateByTransition($stateCollection->getStates());
     $filteredStates = iterator_to_array($filter);
     $this->assertNotContains($stateCollection->getState('foo'), $filteredStates);
     $this->assertContains($stateCollection->getState('bar'), $filteredStates);
     $this->assertNotContains($stateCollection->getState('baz'), $filteredStates);
 }
All Usage Examples Of Metabor\Statemachine\Util\SetupHelper::findOrCreateTransition