PHP除錯函式

2022-09-16 01:03:12 字數 2117 閱讀 1917

我見過封裝幾次這樣封裝的函式:

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...