Aller au contenu

Hook (informatique)

Un article de Wikipédia, l'encyclopédie libre.

Un hook (littéralement « crochet » ou « hameçon ») permet à l'utilisateur d'un logiciel de personnaliser le fonctionnement de ce dernier, en lui faisant réaliser des actions supplémentaires à des moments déterminés. Le concepteur du logiciel prévoit des hooks tout au long du fonctionnement de son programme, qui sont des points d'entrée vers des listes d'actions. Par défaut, le hook est généralement vide et seules les fonctionnalités de base de l'application sont exécutées. Cependant, l'utilisateur peut « accrocher » des morceaux de programme à ces hooks pour personnaliser le logiciel.

Techniquement, un hook peut se présenter sous la forme d'un fichier, généralement dans un langage de script, localisé à un endroit particulier. Le programme principal impose généralement les caractéristiques du hook : son type, sa localisation, voire son nom, et le moment auquel il sera exécuté.

Le webhook est un type de hook avec une application web via une fonction de rappel.

Exemples de hooks :

  • Dans TortoiseSVN, il existe plusieurs hooks permettant l'exécution de batch. Il existe notamment un hook pre-commit et un hook post-commit. Il faut copier les .bat dans le répertoire dédié de Tortoise. Ils seront alors automatiquement exécutés par Tortoise. Dans ce cas, la localisation, le nom et le type de fichier est imposé. Cependant, il est possible, depuis le batch, d'appeler d'autres programmes.
  • Dans UltraBackup, l'interface graphique permet de pointer sur des programmes qui seront lancés avant ou après la copie. Dans ce cas, l'utilisateur a une liberté totale sur le type de fichier à appeler, son nom et sa localisation.
  • Dans Drupal, le système dans son ensemble repose sur un système de "hook". Le "hook_form_alter" permet par exemple de modifier un formulaire. La documentation officielle sur les "hooks" dans Drupal : http://api.drupal.org/api/drupal/includes!module.inc/group/hooks/7
  • Avec React, depuis la version 16.8. Ils permettent de bénéficier d’un état local et d’autres fonctionnalités de React sans avoir à écrire de classes. L'un des premiers bénéfices est de pouvoir réutiliser de la logique sans avoir à modifier la hiérarchie des composants.