/** * Adds a token to one or more states. * * @param Token $token - Token. * @param array $states - Array of states. * * @throws ValidationException * * @return Flow */ public function addTokenToStates(Token $token, array $states) : self { foreach ($states as $state) { if (!$state instanceof State) { throw ValidationException::create('Each element of $states must be an instance of State.'); } $state->addToken($token); } return $this; }
/** * Creates a node instance. * * @param array $data - Node Data. * @param array $options - Node Options. * * @throws ValidationException * * @return AbstractNode */ public function createNodeInstance(array $data, array $options = []) : AbstractNode { if (!isset($data['type'])) { throw ValidationException::create('Field "type" is mandatory.'); } switch ($data['type']) { case Flow::TYPE: $node = new Flow($data, $options); break; case State::TYPE: $node = new State($data, $options); break; case Transition::TYPE: $node = new Transition($data, $options); break; default: throw ValidationException::create('Type "' . $data['type'] . '" invalid.'); } return $node; }