public function CheckProvider::loadCheck

public CheckProvider::loadCheck($service_id)

Lazy-loads access check services.

Parameters

string $service_id: The service id of the access check service to load.

Return value

callable A callable access check.

Throws

\InvalidArgumentException Thrown when the service hasn't been registered in addCheckService().

\Drupal\Core\Access\AccessException Thrown when the service doesn't implement the required interface.

Overrides CheckProviderInterface::loadCheck

File

core/lib/Drupal/Core/Access/CheckProvider.php, line 91

Class

CheckProvider
Loads access checkers from the container.

Namespace

Drupal\Core\Access

Code

public function loadCheck($service_id) {
  if (empty($this->checks[$service_id])) {
    if (!in_array($service_id, $this->checkIds)) {
      throw new \InvalidArgumentException(sprintf('No check has been registered for %s', $service_id));
    }

    $check = $this->container->get($service_id);

    if (!($check instanceof AccessInterface)) {
      throw new AccessException('All access checks must implement AccessInterface.');
    }
    if (!is_callable(array($check, $this->checkMethods[$service_id]))) {
      throw new AccessException(sprintf('Access check method %s in service %s must be callable.', $this->checkMethods[$service_id], $service_id));
    }

    $this->checks[$service_id] = $check;
  }
  return [$this->checks[$service_id], $this->checkMethods[$service_id]];
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Access!CheckProvider.php/function/CheckProvider::loadCheck/8.1.x