function HookCollectorPass::checkForProceduralOnlyHooks

Checks for hooks which can't be supported in classes.

Parameters

\Drupal\Core\Hook\Attribute\Hook $hookAttribute: The hook to check.

class-string $class: The class the hook is implemented on.

1 call to HookCollectorPass::checkForProceduralOnlyHooks()
HookCollectorPass::collectModuleHookImplementations in core/lib/Drupal/Core/Hook/HookCollectorPass.php
Collects procedural and Attribute hook implementations.

File

core/lib/Drupal/Core/Hook/HookCollectorPass.php, line 572

Class

HookCollectorPass
Collects and registers hook implementations.

Namespace

Drupal\Core\Hook

Code

public static function checkForProceduralOnlyHooks(Hook $hookAttribute, string $class) : void {
  $staticDenyHooks = [
    'hook_info',
    'install',
    'module_implements_alter',
    'requirements',
    'schema',
    'uninstall',
    'update_last_removed',
    'install_tasks',
    'install_tasks_alter',
  ];
  if (in_array($hookAttribute->hook, $staticDenyHooks) || preg_match('/^(post_update_|update_\\d+$)/', $hookAttribute->hook)) {
    throw new \LogicException("The hook {$hookAttribute->hook} on class {$class} does not support attributes and must remain procedural.");
  }
}

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