Uma visão geral de Hooks

Comecei recentemente a trabalhar com programação para aplicações web com Drupal e durante o treinamento/leitura de materiais sobre esse CMS o que eu mais via era a palavra hooks, mas o que são hooks?

O conceito lembra muito um event listener, pois é executado quando uma "ação" acontece. Porém a ideia por trás dele é interceptar funções, mensagens e eventos de componentes do software e alterar eles conforme a vontade do programador.

Então se eu quero adicionar uma funcionalidade ao core do Drupal, ao invés de eu modificar o código e ter que verificar erros/modificar novamente a cada atualização, eu posso usar uma hook. O próprio Drupal tratará de executar a minha função hook quando for o momento certo e ela alterará o core da forma que eu desejar/for permitido.

Para criarmos uma no Drupal, basta que criar uma função com o nome do modulo "underline" nome da hook, por exemplo se quisermos alterar o menu do Drupal para o nosso módulo "fotos", basta fazer: "function fotos_modulo(){}" e fazer as modificações necessárias de acordo com a api do framework.

Hooks também podem ser muito úteis para debugar códigos, emular interação com o usuário e até mesmo gerar códigos maliciosos.

Além do Drupal, o Emacs também usa hooks para definir os "modes"(como php-mode). Porém a forma de faze-lo é um pouco diferente por estarmos falando de uma linguagem funcional. Caso fique interessado nas hooks de emacs lisp, aqui tem uma introdução legal ou se quiser saber sobre as hooks do Drupal tem esse do site oficial.