問題描述
我很新的外掛創作,並且很難除錯。
我使用了很多回聲,它是馬虎和醜陋。
我相信有一個更好的方式來做到這一點,也許一個 IDE 的偵錯程式,我可以執行整個網站包括外掛?
最佳解決方案
進入 wp-config.php 並將 define('WP_DEBUG', false); 更改為 define('WP_DEBUG', true); 。另外,安裝 Andrew Nacin 的 Log Deprecated Notices 外掛。
次佳解決方案
如果您收到錯誤列印,那麼 x-debug 是一個輝煌的 PHP 擴充套件,為 PHP 新增了現代的追溯。
如果你想弄清楚沒有出現錯誤的情況,我最喜歡的方法是定義一個將其輸出記錄到檔案的功能。所以我做 plog($變數),並出現在日誌檔案中,然後我可以檢查。當您嘗試找出呼叫 header() 之前發生的情況或其他無法列印到 STDOUT 的情況時,這一點尤其有用。
第三種解決方案
使用 xdebug + NetBeans IDE 。完全配置 – 這很容易做到 – 你可以在外掛中設定斷點,並在斷點處觀察變數。我認為這是除錯外掛或任何 PHP 應用程式的最佳方法。
第四種方案
我除錯老式的方式,error_log() ing 和 var_dump ing 。我發現這是最有效的方式,我有幾個包裝函式來處理不同型別的資料,因為 error_log 的陣列和物件可能會很痛苦。另外,當 print_r()不在<pre> 中時,使用 print_r()可能很難閱讀。我有 tj_log()進行錯誤記錄,tj()顯示輸出 (基本上顯示任何資料型別在可呈現的甘露:
function tj( $code ) {
?>
<style>
.tj_debug { word-wrap: break-word; white-space: pre; text-align: left; position: relative; background-color: rgba(0, 0, 0, 0.8); font-size: 11px; color: #a1a1a1; margin: 10px; padding: 10px; margin: 0 auto; width: 80%; overflow: auto; -moz-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -webkit-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -moz-border-radius: 5px; -webkit-border-radius: 5px; text-shadow: none; }
</style>
<br /><pre class="tj_debug">
<?php
if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
var_dump( $code );
else :
print_r( $code );
endif;
echo '</pre><br />';
}
function tj_log( $code ) {
if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
$code = var_export( $code, true );
else :
$code = print_r( $code, true );
endif;
error_log( $code );
}
所以我只是做:tj( $current_user ); 或任何。
第五種方案
在修改了許多 IDE 之後,我使用 ultra-customized 語法突出顯示配色方案,將其定義為普通舊的 Notepad++。
我有一個宏設定,當我打 Shift-Ctrl-X,以下程式碼獲取輸出我的遊標所在:
echo "<pre>";
var_dump($);
echo "</pre>";
exit();
這很簡單,但是我通常可以使用這個宏加上 WP_DEBUG 來追蹤 90%的錯誤。
第六種方案
我為一個日誌檔案寫了一個小類,當你除錯 ajax 呼叫時非常有用。
http://github.com/hunk/Magic-Fields/blob/master/tools/debug.php
你只需要做一些事情:
Debug :: log(「這是一個除錯訊息」);
當執行該行時,訊息將被新增到日誌檔案中,之後可以使用 tail 命令 (如果使用某些 unix 的風格作業系統)
tail -f mylogfile.log
如果你也可以傳遞給這個函式一個陣列或一個物件。
請注意,您需要更改要儲存日誌檔案的路徑的第 20 行
第七種方案
我在 Linux 上使用 Aptane IDE,在 Windows 上使用 UltraEdit,而且還有一個 PHP-parser 。另外,我用 wp-config.php 中定義的常量 WP_DEBUG 檢視 xDebug 的所有提示。
另請參閱我的 post on this topic,並隨時發表評論並提供有關您的開發工具的反饋。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。