/** * {@inheritdoc} */ public function can($transition, array $parameters = array()) { $transition = $transition instanceof TransitionInterface ? $transition : $this->getTransition($transition); if (!$this->authorizationChecker->isGranted($transition->getName(), $this->getObject())) { return false; } return parent::can($transition, $parameters); }
/** * @{inheritDoc} */ public function can($transition) { $transition = $transition instanceof TransitionInterface ? $transition : $this->getTransition($transition); if (!$this->securityContext->isGranted($transition->getName(), $this->getObject())) { return false; } return parent::can($transition); }
protected function tryAnswerForCommand(Update $update) { if (!$update->isText()) { return null; } foreach ($this->transitions() as $transition_name => $transition_options) { $isValidTransition = starts_with($update->message->text, '/' . $transition_name) && $this->stateMachine->can($transition_name); if ($isValidTransition) { return $this->transition($transition_name); } } return null; }
/** * Returns if the transition is applicable. * * @param string|TransitionInterface $transition * @param array $parameters * * @return bool */ public function can($transition, array $parameters = []) { return $this->stateMachine->can($transition, $parameters); }
/** * Checks whether object can transition * * @param \Illuminate\Database\Eloquent\Model $object * @param $value * @return bool */ public function can(\Illuminate\Database\Eloquent\Model $object, $value) { $this->setStateMachine($object); return $this->stateMachine->can($value); }
use Finite\State\State; use Finite\State\StateInterface; use Finite\StateMachine\StateMachine; // Composer Autoloader require_once '../vendor/autoload.php'; // Create a new State Machine $stateMachine = new StateMachine(); // define some States $stateMachine->addState(new State('state1', StateInterface::TYPE_INITIAL)); $stateMachine->addState(new State('state2')); $stateMachine->addState(new State('state3')); $stateMachine->addState(new State('state4', StateInterface::TYPE_FINAL)); $thing = new Thing(); // add some transitions $stateMachine->addTransition('from_1_to_2', 'state1', 'state2'); $stateMachine->addTransition('from_2_to_3', 'state2', 'state3'); $stateMachine->addTransition('from_3_to_4', 'state3', 'state4'); $stateMachine->addTransition('from_4_to_2', 'state4', 'state2'); // add stateful object into state machine $stateMachine->setObject($thing); $stateMachine->initialize(); // current state echo $stateMachine->getCurrentState(); // can transition to a valid state var_dump($stateMachine->can('from_1_to_2')); // can transition to a invalid state var_dump($stateMachine->can('from_2_to_3')); // switch state $stateMachine->apply('from_1_to_2'); var_dump($stateMachine->can('from_2_to_3')); echo $stateMachine->getCurrentState();