問題描述
我很新的插件創作,並且很難調試。
我使用了很多回聲,它是馬虎和醜陋。
我相信有一個更好的方式來做到這一點,也許一個 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。