You are here

protected function ModuleHandler::getImplementationInfo in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Extension/ModuleHandler.php \Drupal\Core\Extension\ModuleHandler::getImplementationInfo()
  2. 9 core/lib/Drupal/Core/Extension/ModuleHandler.php \Drupal\Core\Extension\ModuleHandler::getImplementationInfo()

Provides information about modules' implementations of a hook.

Parameters

string $hook: The name of the hook (e.g. "help" or "menu").

Return value

mixed[] An array whose keys are the names of the modules which are implementing this hook and whose values are either a string identifying a file in which the implementation is to be found, or FALSE, if the implementation is in the module file.

File

core/lib/Drupal/Core/Extension/ModuleHandler.php, line 583

Class

ModuleHandler
Class that manages modules in a Drupal installation.

Namespace

Drupal\Core\Extension

Code

protected function getImplementationInfo($hook) {
  if (!isset($this->implementations)) {
    $this->implementations = [];
    $this->verified = [];
    if ($cache = $this->cacheBackend
      ->get('module_implements')) {
      $this->implementations = $cache->data;
    }
  }
  if (!isset($this->implementations[$hook])) {

    // The hook is not cached, so ensure that whether or not it has
    // implementations, the cache is updated at the end of the request.
    $this->cacheNeedsWriting = TRUE;

    // Discover implementations.
    $this->implementations[$hook] = $this
      ->buildImplementationInfo($hook);

    // Implementations are always "verified" as part of the discovery.
    $this->verified[$hook] = TRUE;
  }
  elseif (!isset($this->verified[$hook])) {
    if (!$this
      ->verifyImplementations($this->implementations[$hook], $hook)) {

      // One or more of the implementations did not exist and need to be
      // removed in the cache.
      $this->cacheNeedsWriting = TRUE;
    }
    $this->verified[$hook] = TRUE;
  }
  return $this->implementations[$hook];
}