Manual:Hooks/ja

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

フックはLocalSettings.phpの終わりもしくは独自の拡張機能ファイルに割り当てられます. 機能をフックに割り当てるもっとも簡単な方法は次の通りです:

一つの要素を$wgHooksに追加します. 拡張機能で新しいフックを作成することも出来ます. この方法で作成されたフックはExtension Hook Registryに追加されます.

バックグラウンド
それぞれのフックはHooks.phpファイルで定義されているwfRunHooks関数のコールによってコードに表示されます. wfRunHooksの最初の引数はフックの名前で、2番目はフックの引数の配列です. wfRunHooks関すは$wgHooks配列から為されるタスクを見つけます. それは呼びだされた関数で引数としてPHP関数のcall_user_func_arrayを呼び出し、...

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


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

イベントハンドラは与えられたイベントのためのグローバルな$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番目のカラムはフックの使い方についての詳細な情報です.

機能ごとに分類したフック
フックの中には複数の機能に分類されたものがあります.

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

関連項目

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