我想從getOldText傳遞$ old到全局編輯器reEdit,但它不工作。我無法從reEdit中調用getOldText,因爲在發生這種情況時,舊文本將被編輯覆蓋。問題在全局函數之間傳遞兩個函數之間的字符串
$old = "INITIAL";
function reEdit() {
global $old;
//removed code creating article object to simplify
$new = $article->getRawText();
$article->doEdit("$new <-new old -> $old"); //PROBLEM HERE, returns as INITIAL
return true;
}
function getOldText() {
global $old;
//removed code creating article object to simplify
$old = $article->getRawText();
return true;
}
$wgHooks['EditFormInitialText'][] = array('getOldText');
$wgHooks['ArticleSaveComplete'][] = array('reEdit');
問題出現在所示的行中 - $ old雖然是全局的,但不會傳遞給它。
$ wgHooks是MediaWiki代碼,分別在文章開始編輯和保存時調用我的函數。對於那些熟悉mediawiki代碼的人,我只是試圖從編輯之前獲取文本。
你可以確認getOldText()在reEdit()之前被調用嗎? – 2011-03-08 16:37:06
嘗試在'$ old'上設置一些默認值。可能MediaWiki以不同於你預期的順序調用函數,所以$ old永遠不會被設置 - 或者其他一些代碼使用'$ old'並且將它重置爲null。全球的樂趣... – 2011-03-08 16:39:29
是的。這是通過Mediawiki的代碼 - $ wgHooks ['EditFormInitialText']將始終在$ wgHooks ['ArticleSaveComplete'] – DharmaTurtle 2011-03-08 16:39:30