function HookCollectorPass::collectAllHookImplementations
Collects all hook implementations.
@internal This method is only used by ModuleHandler.
@todo Pass only $container and make protected when ModuleHandler::add() is removed in Drupal 12.0.0.
Parameters
array<string, array{pathname: string}> $module_list: An associative array. Keys are the module names, values are relevant info yml file path.
list<string> $skipProceduralModules: Module names that are known to not have procedural hook implementations.
Return value
static A HookCollectorPass instance holding all hook implementations and include file information.
2 calls to HookCollectorPass::collectAllHookImplementations()
- HookCollectorPass::process in core/
lib/ Drupal/ Core/ Hook/ HookCollectorPass.php - ModuleHandler::add in core/
lib/ Drupal/ Core/ Extension/ ModuleHandler.php - Adds a module or profile to the list of currently active modules.
File
-
core/
lib/ Drupal/ Core/ Hook/ HookCollectorPass.php, line 363
Class
- HookCollectorPass
- Collects and registers hook implementations.
Namespace
Drupal\Core\HookCode
public static function collectAllHookImplementations(array $module_list, array $skipProceduralModules = []) : static {
$modules = array_keys($module_list);
$modules_by_length = $modules;
usort($modules_by_length, static fn($a, $b) => strlen($b) - strlen($a));
$known_modules_pattern = implode('|', array_map(static fn($x) => preg_quote($x, '/'), $modules_by_length));
$module_preg = '/^(?<function>(?<module>' . $known_modules_pattern . ')_(?!update_\\d)(?<hook>[a-zA-Z0-9_\\x80-\\xff]+$))/';
$collector = new static($modules);
foreach ($module_list as $module => $info) {
$skip_procedural = in_array($module, $skipProceduralModules);
$collector->collectModuleHookImplementations(dirname($info['pathname']), $module, $module_preg, $skip_procedural);
}
return $collector;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.