¿Qué son los ganchos? [cerrado]

15

Sigo encontrando ganchos de este término en varios artículos de programación. Sin embargo, no entiendo qué son y cómo se pueden usar. Así que solo quería saber cuál es el concepto de ganchos; si alguien pudiera vincularme con algunos ejemplos, particularmente en el contexto del desarrollo web, sería genial.

Rasmus
fuente
Un método de enlace es un método concreto en una clase abstracta que puede ser anulado por subclases, pero tiene un comportamiento predeterminado en la clase abstracta.
gal007

Respuestas:

18

Mi respuesta se refiere a WordPress que está escrito en PHP, pero esta es una mecánica de desarrollo general, por lo que realmente no debería importar, a pesar de que pones 'python' en el título de tu pregunta.

Un buen ejemplo del uso de ganchos, casualmente en el desarrollo web, son los ganchos de WordPress .

Se nombran apropiadamente porque permiten una forma de 'engancharse' en ciertos puntos de la ejecución de un programa.

Entonces, por ejemplo, wp_head es una 'acción' que se emite cuando se está representando un tema de WordPress y está en la parte donde representa la parte que está dentro de las <head>etiquetas. Supongamos que desea escribir un complemento que requiera una hoja de estilo adicional, un script o algo que normalmente iría dentro de esas etiquetas. Puede 'engancharse' a esta acción definiendo una función que se llamará cuando se emita esta acción. Algo como:

add_action('wp_head', 'your_function');

your_function() podría ser algo tan simple como:

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

Ahora, cuando WordPress emite esta acción al hacer algo como do_action('wp_head');esto, verá que your_function()se 'enganchó' a esa acción, por lo que llamará a esa función ( y le pasará cualquier argumento si es necesario, como se define en la documentación para cualquier enlace particular) )

En pocas palabras: le permite agregar funcionalidades adicionales en puntos específicos de la ejecución de un programa 'enganchándose' a esos puntos, en la mayoría de los casos asignando una devolución de llamada de función.

Jorge Israel Peña
fuente
2

Dependiendo de los antecedentes de la persona que hace la pregunta, a veces la respuesta a esta pregunta puede ser tan simple como los ganchos suelen ser otra palabra para un controlador de eventos, para lo cual Blaenk dio una excelente explicación.

También hay usos de esta frase que son cuando se inyecta un evento o código en un proceso que de otro modo no tiene eventos como lunares, por ejemplo.

Cuenta
fuente
Gracias Bill, los lunares se parecen a un concepto .NET, que es totalmente ajeno a mí, ¿podrías señalarme algo pitónico o php o algo más general?
Rasmus
Desafortunadamente, no uso los dos suficientes para reclamar experiencia, pero si lo estoy leyendo correctamente, creo que stackoverflow.com/questions/156230/… es una idea similar que se está discutiendo, pero los topos pueden enganchar un ensamblaje compilado. Un controlador de minipuerto es otro lugar donde la frase de gancho se usa a veces. Mi punto era más que la terminología de "gancho" se puede usar de otra manera a veces, en la tecnología MS de todos modos, tal vez el segundo uso no se aplica también a Python.
Bill el