izzum\statemachine\Transition::setGuardCallable PHP Метод

setGuardCallable() публичный Метод

the callable to call as part of the transition guard
public setGuardCallable ( callable $callable )
$callable callable
    public function setGuardCallable($callable)
    {
        $this->callable_guard = $callable;
        return $this;
    }

Usage Example

 /**
  * @test
  */
 public function shouldNotBeAllowedToTransitionByCallable()
 {
     $context = new Context(new Identifier('123', 'foo-machine'));
     $event = 'foo';
     $a = new State('a');
     $b = new State('b');
     $guard_callable = function ($entity) {
         return false;
     };
     //scenario 1. inject in constructor
     $t = new Transition($a, $b, $event, null, null, $guard_callable);
     $this->assertFalse($t->can($context));
     $t->setGuardCallable(Transition::CALLABLE_NULL);
     $this->assertTrue($t->can($context));
     //scenario 2. do not inject in constructor
     $t = new Transition($a, $b, $event);
     $this->assertTrue($t->can($context));
     $t->setGuardCallable($guard_callable);
     $this->assertFalse($t->can($context));
     //scenario 3. callable does not return a boolean
     $guard_callable = function ($entity) {
     };
     $t = new Transition($a, $b, $event, null, null, $guard_callable);
     $this->assertFalse($t->can($context));
 }