2010-02-13 61 views
0

WordPress有一組函數調用可插入函數;基本上,它們被設計用於新功能,但有一個問題 - 如果另一個插件首先定義該功能,則其他一些較低優先級的插件不能......(否則會有致命錯誤)。因此,它是常見的有「包括衛士」這樣測試可插拔函數調用WordPress和單元測試的衝突

if (!function_exists('wp_new_user_notification')) 
{ 
    function wp_new_user_notification($userid, $blah='') 
    { 
    } 
} 

這避免了致命的錯誤,但它會導致插件神祕失敗...

通常一個儘量避免衝突的插件。然而,一個問題是,你不知道插件是否會發生衝突,有時很難避免插件的功能。

問題是(抱歉花了這麼長時間來設置前提)你如何檢測衝突?它總是一個看不見的失敗,因爲函數存在,沒有錯誤拋出,但結果是「嘿,這個插件壞了!」

如果函數已經定義,我可以回顯一些東西,但是如何將它變成單元測試?當頁面加載時,WordPress將包含所有插件的頭文件。如何確定Wordpress加載的可插入函數是否是我想要的編程方式?

回答

0

,想到的唯一的事情是,以紀念你的應用爲標誌的函數聲明失敗和測試:

if (!function_exists('wp_new_user_notification')) 
{ 
    function wp_new_user_notification($userid, $blah='') 
    { 
    } 
} 
else 
{ 
    define('MY_PLUGIN_NEW_USER_NOTIFICATION_DECLARATION_FAILED', true); 
} 

,然後用defined測試:

if(defined('MY_PLUGIN_NEW_USER_NOTIFICATION_DECLARATION_FAILED')) 
{ 
// fail 
}