web-dev-qa-db-ja.com

フックとは何ですか?

私はさまざまなプログラミング記事でこの用語のフックに遭遇し続けます。しかし、私はそれらが何であるか、そしてそれらがどのように使用されるのかを理解していません。だから私はフックの概念が何であるか知りたいだけでした。誰かが私をいくつかの例、特にWeb開発のコンテキストにリンクできれば、それは素晴らしいことです。

15
Rasmus

私の答えはWordPressはPHPで書かれています)に関係しますが、これは一般的な開発メカニズムであるため、質問のタイトルに「python」を入れても実際には問題になりません。

偶然にもWeb開発でのフックの使用法の1つの良い例は WordPressのフック です。

それらは、プログラムの実行の特定のポイントに「フック」する方法を可能にするという意味で適切に命名されています。

したがって、たとえば、 wp_head は、WordPressテーマがレンダリングされ、その中にある部分をレンダリングする部分にあるときに発行される「アクション」です。 _<head>_タグ。追加のスタイルシート、スクリプト、または通常これらのタグ内に含まれるものを必要とするプラグインを作成したいとします。このアクションが呼び出されたときに呼び出される関数を定義することにより、このアクションに「フック」できます。アクションが発行されます。

_add_action('wp_head', 'your_function');
_

your_function()は、次のように単純なものにすることができます。

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

ここで、WordPressがdo_action('wp_head');のようなことを実行してこのアクションを発行すると、your_function() 'であったことがわかります特定のフックのドキュメントで定義されているように、そのアクションにフックされているので、その関数を呼び出し(、引数がある場合は引数を渡します)。

要するに、プログラムの実行の特定のポイントに「フック」することにより、ほとんどの場合、関数のコールバックを割り当てることで、機能を追加できます。

19

質問をする人の背景によっては、フックがイベントハンドラーの別の単語であるのと同じくらい簡単な場合があります。

このフレーズは、たとえば moles のようなイベントを持たないプロセスにイベントまたはコードを挿入する場合にも使用されます。

2
Bill