函式名: debug_backtrace()
適用版本: PHP 4, PHP 5, PHP 7
用法: debug_backtrace() 函式用於獲取當前呼叫堆疊的詳細資訊,用於除錯和錯誤追蹤。該函式返回一個陣列,陣列中每個元素都是一個關聯陣列,表示一幀的堆疊資訊。每個關聯陣列包含以下鍵值:
- "function": 呼叫該堆疊的函式名。
- "file": 包含該堆疊的檔名。
- "line": 呼叫該堆疊的行號。
- "class": 如果該函式是類的方法,則包含該類名。
- "object": 如果該函式是類的方法,包含該類的例項物件。
- "type": 如果該函式是類的方法,包含運算子 "->"。
- "args": 以陣列形式包含了函式呼叫傳遞的所有引數。
示例:
function foo() {
bar();
}
function bar() {
baz();
}
function baz() {
$trace = debug_backtrace();
foreach($trace as $frame) {
echo $frame['function'] . ' called in ' . $frame['file'] . ' on line ' . $frame['line'] . PHP_EOL;
}
}
foo();
輸出:
foo called in example.php on line 4
bar called in example.php on line 9
baz called in example.php on line 14
在上面的示例中,我們定義了三個函式 foo(),bar() 和 baz(),並呼叫了 foo() 函式。當呼叫 debug_backtrace() 函式時,在 baz() 函式中的 foreach 迴圈中,我們可以獲取到整個呼叫堆疊的詳細資訊,並列印出每一幀的函式名、檔名和行號。注意,呼叫堆疊是按照呼叫順序從最近到最遠的形式返回的。