/**
  * Resolves a ResolvableAuthorizationInterface
  *
  * @param  ResolvableAuthorizationInterface|string $resolvable Resolvable to resolve
  * @param  array $params Params for resolution
  * @return null
  */
 public function resolve($resolvable, $params = [])
 {
     if (ResolvableAuthorizationRegistry::isRegistered($resolvable)) {
         $resolvable = ResolvableAuthorizationRegistry::get($resolvable);
     }
     $resolvable->resolve($params);
     $resolvable->afterResolve();
     EventManager::instance()->dispatch(new Event('AuthorizationInternalEvent.AuthorizationResolved', $this, [$resolvable, $params]));
     return $resolvable->value();
 }
 /**
  * Test that register function register an authorization
  */
 public function testRegister()
 {
     $callback = function () {
     };
     $this->manager->registerResolvable('name', $this->manager->context($callback));
     $this->assertTrue(ResolvableAuthorizationRegistry::isRegistered('name'));
     $resolvable = ResolvableAuthorizationRegistry::get('name');
     $this->assertInstanceOf("ResolveAuth\\Authorization\\Resolvable\\ContextAuthorization", $resolvable);
 }
 /**
  * Creates instances from an array.
  *
  * Example :
  *  $array = [
  *      ['type', 'param'],
  *      ['Group', 'user'],
  *      'ignoredAlreadyRegisteredResolvableAuthorization',
  *      $ignoredAlreadyRegisteredResolvableAuthorization
  *  ]
  *
  * @param $authorizationArray
  * @return array
  * @throws Exception
  * @throws InvalidArgumentException
  */
 public function createFromArray($authorizationArray)
 {
     $resolvables = [];
     foreach ($authorizationArray as $resolvable) {
         if (!is_array($resolvable)) {
             $resolvables[] = ResolvableAuthorizationRegistry::get($resolvable);
             continue;
         }
         $resolvables[] = ResolvableAuthorizationInstance::getInstance()->create($resolvable[0], $resolvable[1]);
     }
     return $resolvables;
 }