O que são ganchos? [fechadas]

15

Eu continuo encontrando esse termo ganchos em vários artigos de programação. No entanto, não entendo o que são e como podem ser usados. Então, eu só queria saber qual é o conceito de ganchos; se alguém pudesse me vincular a alguns exemplos, particularmente no contexto de desenvolvimento web, seria ótimo.

Rasmus
fonte
Um método hook é um método concreto em uma classe abstrata que pode ser substituído por subclasses, mas possui um comportamento padrão na classe abstrata.
gal007

Respostas:

18

Minha resposta diz respeito ao WordPress, que está escrito em PHP, mas essa é uma mecânica geral de desenvolvimento, portanto não deve importar, apesar do fato de você ter colocado 'python' no título da sua pergunta.

Um bom exemplo de uso de ganchos, coincidentemente no desenvolvimento da Web, são os ganchos do WordPress .

Eles são nomeados de maneira apropriada, pois permitem uma maneira de "se conectar" a certos pontos da execução de um programa.

Por exemplo, o wp_head é uma 'ação' emitida quando um tema do WordPress está sendo renderizado e é na parte em que ele renderiza a parte que está dentro das <head>tags. Digamos que você queira escrever um plug-in que exija uma folha de estilo, script ou algo que normalmente entraria nessas tags. Você pode 'conectar-se' a essa ação definindo uma função a ser chamada quando essa ação for emitida. Algo como:

add_action('wp_head', 'your_function');

your_function() pode ser algo tão simples como:

function your_function() {
    echo '<link rel="stylesheet" type="text/css" href="lol.css" />';
}

Agora, quando o WordPress emitir essa ação, fazendo algo como do_action('wp_head');, ele verá que your_function()foi 'enganchado' nessa ação, portanto chamará essa função ( e passará a ela quaisquer argumentos, se necessário), conforme definido na documentação de qualquer gancho específico )

Longa história: permite adicionar funcionalidades adicionais em pontos específicos da execução de um programa, conectando-os a esses pontos, na maioria dos casos, atribuindo um retorno de chamada de função.

Jorge Israel Peña
fonte
2

Dependendo do histórico da pessoa que pergunta, às vezes a resposta a essa pergunta pode ser tão simples quanto ganchos geralmente são outra palavra para um manipulador de eventos, para o qual Blaenk deu uma excelente explicação.

Também existem usos dessa frase quando você injeta um evento ou código em um processo que, caso contrário, não possui eventos como toupeiras, por exemplo.

Conta
fonte
Obrigado Bill, moles parece um conceito .NET, que é totalmente estranho para mim, você poderia me indicar algo python ou php ou algo mais geral.
Rasmus
Infelizmente, eu não uso esses dois o suficiente para reivindicar experiência, mas se eu estiver lendo corretamente, acredito que stackoverflow.com/questions/156230/… é uma idéia semelhante sendo discutida, mas as toupeiras podem ligar um assembly compilado. Um driver de miniporta é outro local em que a frase de gancho é usada algumas vezes. Meu argumento era mais que a terminologia "hook" pode ser usada de outra maneira, às vezes, na tecnologia mais antiga da MS, talvez o segundo uso também não se aplique ao python.
Bill