function ModuleHandler::hasImplementations

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

Determines whether there are implementations of a hook.

Parameters

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

string|string[]|null $modules: (optional) A single module or multiple modules to check if they have any implementations of a hook. Use NULL to check if any enabled module has implementations.

Return value

bool If $modules is provided, then TRUE if there are any implementations by the module(s) provided. Or if $modules if NULL, then TRUE if there are any implementations. Otherwise FALSE.

Overrides ModuleHandlerInterface::hasImplementations

1 call to ModuleHandler::hasImplementations()
ModuleHandler::invoke in core/lib/Drupal/Core/Extension/ModuleHandler.php
Invokes a hook in a particular module.

File

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

Class

ModuleHandler
Class that manages modules in a Drupal installation.

Namespace

Drupal\Core\Extension

Code

public function hasImplementations(string $hook, $modules = NULL) : bool {
  if ($modules !== NULL) {
    foreach ((array) $modules as $module) {
      // Hook implementations usually found in a module's .install file are
      // not stored in the implementation info cache. In order to invoke hooks
      // like hook_schema() and hook_requirements() the module's .install file
      // must be included by the calling code. Additionally, this check avoids
      // unnecessary work when a hook implementation is present in a module's
      // .module file.
      if (function_exists($module . '_' . $hook)) {
        return TRUE;
      }
    }
  }
  $implementations = $this->getImplementationInfo($hook);
  if ($modules === NULL && !empty($implementations)) {
    return TRUE;
  }
  return !empty(array_intersect((array) $modules, array_keys($implementations)));
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.