Cosa sono i ganci? [chiuso]


15

Continuo a imbattermi in questo termine hook in vari articoli di programmazione. Tuttavia non capisco cosa siano e come possano essere utilizzati. Quindi volevo solo sapere qual è il concetto di ganci; se qualcuno potesse collegarmi ad alcuni esempi, in particolare nel contesto dello sviluppo web, sarebbe fantastico.


Un metodo hook è un metodo concreto in una classe astratta che può essere sovrascritto da sottoclassi, ma ha un comportamento predefinito nella classe astratta.
gal007,

Risposte:


18

La mia risposta riguarda WordPress, che è scritto in PHP, ma questa è una meccanica di sviluppo generale, quindi non dovrebbe importare, nonostante il fatto che tu abbia inserito "python" nel titolo della domanda.

Un buon esempio di utilizzo degli hook, per coincidenza nello sviluppo web, sono gli hook di WordPress .

Sono chiamati in modo appropriato in quanto consentono un modo per "agganciarsi" a determinati punti dell'esecuzione di un programma.

Ad esempio, wp_head è un '"azione" che viene emessa durante il rendering di un tema WordPress ed è nella parte in cui viene visualizzata la parte che si trova all'interno dei <head>tag. Supponi di voler scrivere un plug-in che richiede un foglio di stile, uno script o qualcosa che normalmente rientrerebbe in quei tag. È possibile "agganciarsi" a questa azione definendo una funzione da chiamare quando questa azione viene emessa. Qualcosa di simile a:

add_action('wp_head', 'your_function');

your_function() potrebbe essere qualcosa di semplice come:

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

Ora, quando WordPress emette questa azione facendo qualcosa del genere do_action('wp_head');, vedrà che è your_function()stata "agganciata" a quell'azione, quindi chiamerà quella funzione ( e le passerà qualsiasi argomento se ne prende, come definito nella documentazione per ogni particolare hook ).

Per farla breve: consente di aggiungere funzionalità aggiuntive in punti specifici dell'esecuzione di un programma "agganciandosi" a tali punti, nella maggior parte dei casi assegnando una funzione di callback.


2

A seconda dello sfondo della persona che chiede a volte la risposta a questa domanda può essere semplice in quanto i ganci sono in genere un'altra parola per un gestore di eventi, per cui Blaenk ha fornito un'ottima spiegazione.

Ci sono anche usi di questa frase che si verificano quando si inietta un evento o un codice in un processo che altrimenti non ha eventi come le talpe, ad esempio.


Grazie Bill, le talpe sembrano un concetto di .NET, che è totalmente estraneo a me, potresti indicarmi qualcosa di pitonico o php o qualcosa di più generale.
Rasmus,

Sfortunatamente non li uso abbastanza per rivendicare la competenza, ma se la sto leggendo correttamente credo che stackoverflow.com/questions/156230/… sia un'idea simile in discussione, ma le talpe possono agganciare un assieme compilato. Un driver miniport è un altro posto in cui viene talvolta utilizzata la frase hook. Il mio punto era più che la terminologia "hook" può essere usata a volte in un altro modo, nella vecchia tecnologia MS, forse il secondo uso non si applica anche a Python.
Bill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.