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

您发布的代码以及链接中的示例代码并未显示实际调用该函数的详细信息。它只是注册为回调。回调函数的部分用处在于您通常根本不必自己调用它们,而是由使用它们的进程自动调用它们。

在 MediaWiki 代码的其他地方,注册的回调ArticleSaveComplete被调用(有一个数组),正确的参数在常规且可识别的函数调用中或通过类似call_user_func().

在定义回调以使用该接口时,您作为程序员的责任只是确保函数定义以正确的顺序采用正确数量的参数,并具有正确的名称。它如何被调用的细节取决于调用它的机制。

于 2012-05-31T22:59:48.790 回答