フックとは何ですか?[閉まっている]


15

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


フックメソッドは、サブクラスでオーバーライドできる抽象クラスの具象メソッドですが、抽象クラスではデフォルトの動作があります。
gal007

回答:


18

私の答えは、PHPで書かれたWordPressに関係していますが、これは一般的な開発メカニックなので、質問のタイトルに「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()

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


2

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

また、このフレーズの使用法もあります。これは、イベントやコードをプロセスに挿入するときに使用されます。プロセスにコードを挿入しないと、たとえば、ほくろのようなイベントが発生しません。


ビルのおかげで、molesは.NETの概念のように見えますが、これは私にはまったく馴染みのないものです。pythonicやphpなど、もっと一般的なものを教えてください。
ラスマス

残念ながら、これら2つを使用して専門知識を主張することはできませんが、正しく読んでいる場合、stackoverflow.com / questions / 156230 / …は議論されている同様のアイデアであると考えていますが、Moleはコンパイル済みアセンブリをフックできます。ミニポートドライバーは、フックフレーズが時々使用される別の場所です。私の要点は、「フック」という用語を別の方法で使用できることです。とにかく古いMS技術では、おそらく2番目の使用はPythonにも当てはまりません。
ビル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.