0

質問は、PHP の関数と引数についてです。mediawiki の単純な拡張機能のコードを読んでいます。コールバック関数を追加します:

$wgHooks['ArticleSaveComplete'][] = 'fnAutoWikiDump';

そして、この関数の定義があります:

function fnAutoWikiDump(&$article, &$user, &$text, &$summary, &$minoredit, 
                    &$watchthis, &$sectionanchor, &$flags, &$revision){...}

この関数内で、クラス $article のメンバーにアクセスできます。

$awd_title = $article->getTitle();

$article呼び出し中に変数がどのように関数に渡されたか理解できませんか? 関数の定義で渡されたように見えますが(間違っていることはわかっています)、どのように渡されたのかわかりません。あなたは?

4

1 に答える 1

1

投稿したコード、およびリンク内のサンプル コードには、実際に関数を呼び出す詳細は示されていません。コールバックとして登録されるだけです。コールバック関数の便利な点の 1 つは、通常、自分で呼び出す必要がまったくなく、関数を使用するプロセスによって自動的に呼び出されることです。

登録されたコールバックが呼び出される MediaWiki コードの別の場所ArticleSaveComplete(それらの配列があります) では、通常の認識可能な関数呼び出しで、または のようなメカニズムを介して、正しいパラメーターが関数呼び出しに渡されますcall_user_func()

そのインターフェイスで動作するようにコールバックを定義する場合、プログラマとしての責任は、関数定義が正しい数のパラメーターを正しい順序で正しい名前で受け取ることだけを確認することです。呼び出される方法の詳細は、それを呼び出すメカニズム次第です。

于 2012-05-31T22:59:48.790 に答える