Was sind Haken? [geschlossen]

15

Ich stoße in verschiedenen Programmartikeln immer wieder auf diesen Begriff. Ich verstehe jedoch nicht, was sie sind und wie sie verwendet werden können. Also wollte ich nur wissen, was unter Haken zu verstehen ist. Wenn mich jemand mit einigen Beispielen verlinken könnte, insbesondere im Zusammenhang mit der Webentwicklung, wäre das großartig.

Rasmus
quelle
Eine Hook-Methode ist eine konkrete Methode in einer abstrakten Klasse, die von Unterklassen überschrieben werden kann, in der abstrakten Klasse jedoch ein Standardverhalten aufweist.
gal007

Antworten:

18

Meine Antwort bezieht sich auf WordPress, das in PHP geschrieben ist, aber dies ist eine allgemeine Entwicklungsmechanik, so dass es eigentlich egal sein sollte, obwohl Sie "Python" in Ihren Fragentitel eingefügt haben.

Ein gutes Beispiel für die Verwendung von Hooks in der Webentwicklung sind die Hooks von WordPress .

Sie werden entsprechend benannt, indem sie die Möglichkeit bieten, sich in bestimmte Punkte der Programmausführung einzuklinken.

So ist zum Beispiel der wp_head eine 'Aktion', die beim Rendern eines WordPress-Themas ausgelöst wird und sich an der Stelle befindet, an der der Teil gerendert wird, der sich in den <head>Tags befindet. Angenommen, Sie möchten ein Plugin schreiben, für das ein zusätzliches Stylesheet, Skript oder etwas anderes erforderlich ist, das normalerweise in diesen Tags enthalten ist. Sie können sich in diese Aktion einklinken, indem Sie eine Funktion definieren, die beim Auslösen dieser Aktion aufgerufen werden soll. Etwas wie:

add_action('wp_head', 'your_function');

your_function() könnte so einfach sein wie:

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

Nun, wenn Wordpress diese Aktion emittiert von etwas zu tun , wie do_action('wp_head');, wird es sehen , dass your_function()war ‚hooked in‘ diese Aktion, so dass er diese Funktion aufruft ( und gibt ihm keine Argumente , wenn es irgendeine nimmt, wie in der Dokumentation für einen bestimmten Haken definiert ).

Kurz gesagt: Sie können zusätzliche Funktionen an bestimmten Punkten der Programmausführung hinzufügen, indem Sie diese Punkte "einbinden", in den meisten Fällen durch Zuweisen eines Funktionsrückrufs.

Jorge Israel Peña
quelle
2

Abhängig vom Hintergrund des Fragenden kann die Antwort auf diese Frage manchmal so einfach sein, wie Haken normalerweise ein anderes Wort für einen Event-Handler sind, für das Blaenk eine hervorragende Erklärung gab.

Es gibt auch Verwendungen dieses Ausdrucks, wenn Sie ein Ereignis oder einen Code in einen Prozess einfügen, der ansonsten keine Ereignisse wie z. B. Mole enthält .

Rechnung
quelle
Vielen Dank, Bill, Maulwürfe sehen aus wie ein .NET-Konzept, das mir völlig fremd ist. Könnten Sie mich bitte auf etwas Pythonisches, PHP- oder etwas allgemeineres hinweisen?
Rasmus
Leider benutze ich diese beiden nicht genug, um Fachwissen zu beanspruchen, aber wenn ich es richtig lese, glaube ich, dass stackoverflow.com/questions/156230/… eine ähnliche Idee ist, die diskutiert wird, aber Maulwürfe können eine kompilierte Assembly einbinden . Ein Miniport-Treiber ist ein weiterer Ort, an dem die Hook-Phrase manchmal verwendet wird. Mein Punkt war eher, dass die "Hook" -Terminologie manchmal anders verwendet werden kann, in älteren MS-Technologien jedoch gilt die zweite Verwendung möglicherweise nicht auch für Python.
Bill,