You are here

public function ModuleHandler::invokeAll in Drupal 8

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

Invokes a hook in all enabled modules that implement it.

Parameters

string $hook: The name of the hook to invoke.

array $args: Arguments to pass to the hook.

Return value

array An array of return values of the hook implementations. If modules return arrays from their implementations, those are merged into one array recursively. Note: integer keys in arrays will be lost, as the merge is done using Drupal\Component\Utility\NestedArray::mergeDeepArray().

Overrides ModuleHandlerInterface::invokeAll

1 call to ModuleHandler::invokeAll()
ModuleHandler::invokeAllDeprecated in core/lib/Drupal/Core/Extension/ModuleHandler.php
Invokes a deprecated hook in all enabled modules that implement it.

File

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

Class

ModuleHandler
Class that manages modules in a Drupal installation.

Namespace

Drupal\Core\Extension

Code

public function invokeAll($hook, array $args = []) {
  $return = [];
  $implementations = $this
    ->getImplementations($hook);
  foreach ($implementations as $module) {
    $function = $module . '_' . $hook;
    $result = call_user_func_array($function, $args);
    if (isset($result) && is_array($result)) {
      $return = NestedArray::mergeDeep($return, $result);
    }
    elseif (isset($result)) {
      $return[] = $result;
    }
  }
  return $return;
}