(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
debug_backtrace — Генерирует обратную трассировку вызовов функций
Функция debug_backtrace() генерирует обратный стек вызовов PHP-функций.
optionsПараметр принимает битовую маску из следующих опций:
| DEBUG_BACKTRACE_PROVIDE_OBJECT | Опция устанавливает бит, который определяет, заполнять ли ключ "object" в выходном массиве. |
| DEBUG_BACKTRACE_IGNORE_ARGS | Опция устанавливает бит, который определяет, исключать ли ключ "args" из выходного массива и вместе с ним аргументы функций и методов, чтобы уменьшить расход памяти. |
Замечание:
Объединение опций даёт четыре возможные комбинации:
Комбинации опций функции debug_backtrace() debug_backtrace()Заполняются оба ключа. debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT)debug_backtrace(~DEBUG_BACKTRACE_PROVIDE_OBJECT)Не включается ключ "object"и заполняется ключ"args".debug_backtrace(0)debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)Опускаются оба ключа "object"и"args".debug_backtrace(~DEBUG_BACKTRACE_PROVIDE_OBJECT | DEBUG_BACKTRACE_IGNORE_ARGS)debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS)Заполняется ключ "object"и опускается ключ"args".
limit
Параметр ограничивает количество кадров стека в выходном массиве.
Со значением по умолчанию —
limit=0 — возвращается весь стек вызовов функций.
Функция возвращает массив вложенных ассоциативных массивов (array). Следующая таблица приводит список возможных элементов выходного массива:
| Имя | Тип | Описание |
|---|---|---|
| function | string | Название текущей функции. Смотрите также описание константы __FUNCTION__. |
| line | int | Текущий номер строки. Смотрите также описание константы __LINE__. |
| file | string | Название текущего файла. Смотрите также описание константы __FILE__. |
| class | string | Название текущего класса. Смотрите также описание константы __CLASS__. |
| object | object |
Текущий объект, если задан флаг DEBUG_BACKTRACE_PROVIDE_OBJECT.
|
| type | string | Текущий тип вызова функции. При вызове метода объекта функция возвращает значение "->". При вызове статического метода класса возвращается "::". При вызове функции ничего не возвращается. |
| args | array |
При вызове этой функции внутри другой функции элементы с этим ключом
содержат списки аргументов функций.
При вызове внутри включаемого файла
элемент содержит названия включённых файлов. За исключением случая,
когда задан флаг DEBUG_BACKTRACE_IGNORE_ARGS.
|
Пример #1 Пример генерации обратной трассировки вызовов функцией debug_backtrace()
<?php
// Файл: /tmp/a.php
function a_test($str)
{
echo "\nПривет, $str";
var_dump(debug_backtrace());
}
a_test('друг');
?>
<?php
// Файл: /tmp/b.php
include_once '/tmp/a.php';
?>При выполнении файла /tmp/b.php PHP выведет результат наподобие такого:
Привет, друг
array(2) {
[0]=>
array(4) {
["file"] => string(10) "/tmp/a.php"
["line"] => int(10)
["function"] => string(6) "a_test"
["args"]=>
array(1) {
[0] => &string(8) "друг"
}
}
[1]=>
array(4) {
["file"] => string(10) "/tmp/b.php"
["line"] => int(2)
["args"] =>
array(1) {
[0] => string(10) "/tmp/a.php"
}
["function"] => string(12) "include_once"
}
}