PHP BUG調試-解決問題的技巧
PHP開發中經常會遇到各種各樣的問題,其中包括了最為常見的BUG。解決一個BUG的過程是一個調試的過程,而調試成功需要我們懂得一些技巧。
例如,一個常見的PHP BUG是字符串匹配的問題,我們給出代碼如下:
$str1 = 'hello,world';
$str2 = 'hello';
if (strpos($str1, $str2)) {
echo 'find it';
} else {
echo 'not found';
}
如果你直接運行以上代碼你會發現無論如何都會輸出"not found",這是為什么呢?
原因不難發現,strpos()函數如果未找到匹配的字符串會返回0(注意是0而不是false),但此處判斷結果會被解析為false從而導致錯誤。可以加上數據類型的判斷,即用===代替==:
if (strpos($str1, $str2) !== false) {
echo 'find it';
} else {
echo 'not found';
}
這個判斷結果的值是布爾類型,兩邊數據類型必須一致,而將判斷信息轉換為布爾值時,只有當值為0或空字符串時,會被認為是false。
怎樣還可以使用其他的調試技巧呢?可以使用XDebug和FirePHP這樣的調試工具,能夠更為快捷地查看調試信息。以下是如何配置XDebug和FirePHP的步驟:
1.為PHP安裝XDebug擴展:
a.從PECL上下載XDebug擴展;
b.安裝擴展。將下載下來的XDebug擴展,解壓后放到php/ext目錄下;
c.在php.ini文件中,添加XDebug擴展的配置信息,如下所示:
[XDebug]
zend_extension = "php_xdebug.dll"
xdebug.remote_enable = On
xdebug.remote_host =127.0.0.1
xdebug.remote_port = 9000
xdebug.profiler_output_dir ="c:/xamp/tmp/xdebug"
2.在瀏覽器中安裝FirePHP的擴展插件。
3.在PHP項目中開啟XDebug的遙控模式。
通過在url中配置參數,讓XDebug進入遙控調試模式,如:
http://localhost/index.php?XDEBUG_SESSION_START=1
首次訪問要打開遙控器
4.將調試信息通過FirePHP輸出到火狐瀏覽器的Firefox插件中。
a.引入firephp庫
require_once 'lib/FirePHPCore/fb.php';
b.輸出調試信息使用fb()函數即可
fb("HELLO WORLD!");
以上就是使用XDebug和FirePHP調試PHP代碼時的一些技巧。若能夠熟練掌握這些技巧,能夠在開發中更快速地排查和解決BUG問題。
上一篇2016 php面試題