function HookCollectorPass::calculateImplementations
Calculates the ordered implementations.
Return value
array<string, array<string, string>> Implementations, as module names keyed by hook name and "$class::$method" identifier.
1 call to HookCollectorPass::calculateImplementations()
- HookCollectorPass::writeToContainer in core/
lib/ Drupal/ Core/ Hook/ HookCollectorPass.php - Writes collected definitions to the container builder.
File
-
core/
lib/ Drupal/ Core/ Hook/ HookCollectorPass.php, line 224
Class
- HookCollectorPass
- Collects and registers hook implementations.
Namespace
Drupal\Core\HookCode
protected function calculateImplementations() : array {
$implementationsByHookOrig = $this->getFilteredImplementations();
// List of hooks and modules formatted for hook_module_implements_alter().
$moduleImplementsMap = [];
foreach ($implementationsByHookOrig as $hook => $hookImplementations) {
foreach (array_intersect($this->modules, $hookImplementations) as $module) {
$moduleImplementsMap[$hook][$module] = '';
}
}
$implementationsByHook = [];
foreach ($moduleImplementsMap as $hook => $moduleImplements) {
// Process all hook_module_implements_alter() for build time ordering.
foreach ($this->moduleImplementsAlters as $alter) {
$alter($moduleImplements, $hook);
}
foreach ($moduleImplements as $module => $v) {
if (is_string($hook) && str_starts_with($hook, 'preprocess_') && str_contains($hook, '__')) {
$this->preprocessForSuggestions[$module . '_' . $hook] = TRUE;
}
foreach (array_keys($implementationsByHookOrig[$hook], $module, TRUE) as $identifier) {
$implementationsByHook[$hook][$identifier] = $module;
}
}
}
foreach ($this->getOrderOperations() as $hook => $order_operations) {
self::applyOrderOperations($implementationsByHook[$hook], $order_operations);
}
return $implementationsByHook;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.