2012-05-31 46 views
0

問題是關於PHP中的函數和參數。我正在閱讀mediawiki的代碼simple extension。 它增加了回調函數:媒體維基。功能如何得到論證?

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

再有就是這個函數的定義:這個功能我可以訪問類$文章成員內部

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

$awd_title = $article->getTitle(); 

我不能瞭解在調用它時如何將變量$article傳遞給函數?它看起來像是在函數的定義中傳遞的(我知道這是錯誤的),但我不明白它是如何傳遞的。 是嗎?

回答

1

你已經發布的代碼,並在鏈接示例代碼不顯示的實際調用該函數的詳細信息。它僅僅被註冊爲回調。回調函數的有用之處在於,您通常不必親自調用它們,而是由使用它們的進程自動調用它們。

別的地方在MediaWiki的代碼,其中有ArticleSaveComplete註冊的回調被稱爲(還有他們的陣列),正確的參數傳遞給函數調用定期和識別功能的調用或通過像call_user_func()的機制。

定義回調以使用該接口時,作爲程序員的責任僅僅是確保函數定義按照正確的順序和正確的名稱獲取正確數量的參數。它如何被調用的細節取決於調用它的機制。

+0

參數名稱實際上並不重要,您也不需要在函數定義中具有與函數調用中相同數量的參數。 – Tgr