我見過封裝幾次這樣封裝的函式:
function debug($data)
挺好,挺好!其實未見到這個函式之前我自己也做過這樣的函式
只是我比他多想了一步:需要停止執行時,能不能增加乙個引數來控制?於是我的版本最初是這樣的:
function debug($data, $isstop = false)
//呼叫示例
debug('abc'); // 輸出資料
debug('abc', 1); // 輸出資料並停止
後來我發現這個雖然能控制停止和有排版輸出了,可是有時候忘記了呼叫除錯輸出的**是寫在哪個函式裡容易造成除錯**的遺留呢,於是我就改進成這樣:
function debug($data, $isstop = false)
我在想,ajax除錯的時候如果這樣輸出了一堆html出去,前端的**通常會不正常工作,因為前端一般要的是從json讀取屬性嘛
所以想了想,我就決定判斷是否ajax請求,是的話我就返回乙個json,不然就輸出html,於是進一步的版本變成了這樣:
function debug($data, $isstop = false)else
$isstop && exit;
}
從此,我只要暫時在前端**裡將**改成
alert(result.datastr)
或者看瀏覽器開發者控工具的網路選項卡的請求響應報文就行了其實上面這個函式已經足夠實用了
最後再來乙個比較強大的版本,支援ajax返回json檢視結構以及支援輸出執行回溯,這是我實際工作中使用的版本
/**
* 輸出除錯資訊
* @author kk
* @param mixed $data 要輸出的除錯資料
* @param int $mode 除錯模式
* 解釋:11=輸出除錯資料並停止執行,111=附加執行回溯輸出並停止執行
* 110=附加執行回溯輸出但不停止執行
* * @example
* * ```php
* debug(123, 110);
* debug([1,2,3], 111);
* debug([1, 2, 3, 'a' => 'b'], 11);
* ```
*/function debug($data, $mode = 0)
}$showdata = var_export($data, true);
if($isajax)elseelse
$length = 'no';
if(is_string($data))
if(php_sapi !== 'cli')
echo <<***************== 新的調試點:
$debugcount ********************====
$file 第 $line 行
$code
除錯輸出內容:
型別:$datatype
字串長度:$length
值:$showdata
$backlink
重新請求本頁
$tracehtml
eol;
}else
$debugcontent = <<$debugcount **********==
$file:$line
$code
data type: $datatype
string length: $length
value:
$showdata
$tracecontent
eol;
echo $debugcontent;
} }
($mode == 11 || $mode == 111) && exit;
}
最後我還記得有些情況是不能只靠輸出來除錯的,而是需要把內容寫到檔案中來看檔案內容
我想過要不要把除錯函式改造成支援寫入檔案內容的呢?
最後想了想還是算了,真有那種情況就慢慢寫一下檔案讀寫**吧,畢竟也不是很經常的事情
php 除錯 函式,php除錯函式
除錯函式小結 1.debug backtrace 函式生成乙個backtrace。該函式返回乙個關聯陣列。下面是可能返回的元素 function 返回當前的函式名 line 當前的行數 file 當前的檔名 class 當前的類名 object 當前物件 type 當前的呼叫型別,可能的呼叫 返回 ...
php除錯和日誌記錄函式
程式開發過程經常需要除錯,發布階段也需要記錄執行日誌,方便發現問題和還原事件。這就要求有除錯和日誌記錄功能。下面分別寫了用於除錯的函式和用於記錄錯誤的函式。使用方法很簡單,且自動根據日期生成日誌檔案 除錯時,多個引數都可以 sysdebug hello sysdebug hello tiger is...
PHP除錯函式和日誌記錄函式分享
程式開發過程經常需要除錯,發布階段也需要記錄執行日誌,方便發現問題和還原事件。這就要求有除錯和日誌記錄功能。下面分別寫了用於除錯的函式和用於記錄錯誤的函式。使用方法很簡單,且自動根據日期生成日誌檔案 複製 如下 除錯時,多個引數都可以 sysdebug hello sysdebug hello ti...