Manual:Hooks/ja



Hooks allow custom code to be executed when some defined event (such as saving an article or a user logging in) occurs. For example, the following code snippet will trigger a call to the function  whenever the   hook runs, passing it function arguments specific to ArticleSaveComplete:

""

MediaWikiは機能を拡張するためにいくつかのフックを提供します. その時点で開発者が便利だと思ったタスクを実行するために機能をフックに割り当てること(イベントハンドラーとして知られる)で機能はメインのMediaWikiコードにある適切なポイントで呼び出されます. それぞれのフックは割り当てられた複数のハンドラーを持ち、チェーンにある次の機能に渡される一つの機能による修正によって割り当てられた順番で機能を呼び出します.

フックはLocalSettings.phpの終わりor in your own extension file at the file scope (not in a $wgExtensionFunctions function or the ParserFirstCallInit hook).

You can also create new hooks in your own extension; if you do so, add them to the Extension hook registry.

背景
それぞれのフックはファイルで定義されているwfRunHooks関数のコールによってコードに表示されます. wfRunHooksの最初の引数はフックの名前で、2番目はフックの引数の配列です. Function wfRunHooks finds the event handlers to run in the array $wgHooks. It calls the PHP function call_user_func_array with arguments being the function to be called and its arguments.

See also the.

In this example from the  function in Article.php, doEdit calls wfRunHooks to run the ArticleSaveComplete hook, passing several arguments:

""

The core calls many hooks, but extensions can also call hooks.

イベントハンドラーを書く
イベントハンドラーはフックに割り当てられた関数で、フックによって表示されるイベントが起きるときにどうします. 次のような構成です:


 * オプションの付属データを伴う関数
 * メソッドとオプションの付属データを伴うオブジェクト

イベントハンドラーは与えられたイベントのためのグローバルな$wgHooks配列にそれらを追加することで登録されます. フックはフックが呼び出される前に実行において、どのポイントからでも追加することが出来ますが、多くはLocalSettings.phpに共通に追加されるか、含まれるファイルです. 次の例はフックを定義する妥当な方法で、'EventName'が動作するときに実行されるコードによるものです:

イベントが起きるとき、関数(もしくはオブジェクトメソッド)はイベント特有のパラメータと同様に提供されたオプションデータで呼び出されます. オブジェクトがフックで、指定されたメソッドが存在しないとき、呼び出されるデフォルトのメソッドは'onEventName'です. 異なるイベントのためにこれは異なります: 'onArticleSave'、'onUserLogin'などです.

異なる目的のために同じ関数もしくはオブジェクトを使用したい場合、外部のデータが便利です. 例です:

記事が保存されたとき、このコードはircNotifyを2回動作させます: 一回は'TimStarling'、もう一回は'brion'のために.

イベントハンドラーは3つの可能な値の一つを返すことが出来ます:


 * true: フックがうまく実行されました
 * "some string": エラーが発生します: 処理は停止してエラーがユーザに表示されます
 * false: フックは必要な作業を実行し関数の呼び出しをスキップします

最後の結果はフック関数がメインの機能性を置き換えるためです. カスタムのシステム(LDAP、他のPHPプログラム、何でも)にユーザを認証させたい場合、次のようにします:

falseを返すことはアクションが完全であるイベントに対してあまり意味をなしませんし、通常は無視されます.

利用可能なフック
このページはMediaWikiで利用できる多くのフックが掲載されており、1.8.2に対しては完全です. 最新のフックについて、とりわけ目的や使い方について多くのものはまだ開発者によってドキュメント化されていません. 詳しい情報をご存じでしたら、記事の追加をお願いします.

テーブルにおいて、最初のカラムはフックが導入されたMediaWikiのバージョンで2番目のカラムはフックの使い方についての詳細な情報です.

機能ごとに分類したフック
フックの中には複数の機能に分類されたものがあります.
 * Sections: Article Management - Edit Page - Page Rendering - User Interface - Special Pages - User Management - Logging - Skinning Templates - API - Miscellaneous

バージョンで分類したフック
バージョンごとに分類されたフックを見るためには上記のテーブルに移動してバージョンテーブルヘッダで矢印記号をクリックして下さい.

関連項目

 * Manual:$wgHooks/ja
 * Category:Hook extensions
 * Manual:Tag extensions/ja
 * Manual:Parser functions/ja