La prise en charge héritée des hooks OOP

Description: 

  1. Créez une classe dans l'espace de noms (ou sous-répertoire) Drupal\modulename\Hook. Celle-ci sera automatiquement enregistrée en tant que service autowired.
  2. Drupal\Core\Hook\Attribute\Hook soit sur les méthodes, soit sur la classe. S'il est utilisé sur la classe et que celle-ci ne dispose pas d'une méthode __invoke, un argument de méthode est alors requis.

https://www.drupal.org/node/3442349

node.module

use Drupal\Core\Hook\Attribute\LegacyHook;
use Drupal\node\Hook\NodeHooks;

// @phpstan-ignore-next-line
#[LegacyHook]
function node_user_cancel($edit, UserInterface $account, $method) {
  // This only needs to be returned if the hook previously had a return.
  return \Drupal::service(NodeHooks::class)->userCancel($edit, $account, $method);
}