(PHP 4 >= 4.3.0, PHP 5, PHP 7)
debug_backtrace — Выводит стек вызовов функций в массив
$options = DEBUG_BACKTRACE_PROVIDE_OBJECT
[, int $limit = 0
]] )debug_backtrace() выводит стек вызовов функций PHP в массив.
optionsВ версии 5.3.6, этот аргумент является битовой маской для следующих настроек:
| DEBUG_BACKTRACE_PROVIDE_OBJECT | Требуется или нет заполнять данные "объектов". |
| DEBUG_BACKTRACE_IGNORE_ARGS | Требуется или нет не выводить данные с индексом "args", то есть списки аргументов всех функций/методов, для уменьшения расхода памяти. |
TRUE или FALSE, которые
означают, задана настройка
DEBUG_BACKTRACE_PROVIDE_OBJECT или нет
соответственно.
limit
В версии 5.4.0, этот аргумент используется для ограничения количества
вызовов функций, которые будут выведены. По умолчанию
(limit=0) будет выведен весь
стек вызовов.
Возвращает массив вложенных ассоциативных массивов (array). Описание элементов массива приведено ниже:
| Имя | Тип | Описание |
|---|---|---|
| function | string | Имя текущей функции. См. также __FUNCTION__. |
| line | integer | Текущий номер строки. См. также __LINE__. |
| file | string | Имя текущего файла. См. также __FILE__. |
| class | string | Имя текущего класса. См. также __CLASS__ |
| object | object | Текущий объект. |
| type | string | Текущий тип вызова функции. Если это вызов метода объекта, будет выведено "->". Если это вызов статического метода класса, то "::". Если это простой вызов функции, не выводится ничего. |
| args | array | При нахождении внутри функции, будет выведен список аргументов этой функции. Если внутри включаемого файла, будет выведен список включаемых файлов. |
| Версия | Описание |
|---|---|
| 5.4.0 |
Добавлен необязательный аргумент limit.
|
| 5.3.6 |
Аргумент provide_object заменен на
options и добавлена дополнительная настройка
DEBUG_BACKTRACE_IGNORE_ARGS.
|
| 5.2.5 |
Добавлен необязательный аргумент provide_object.
|
| 5.1.1 | Элементом возвращаемого массива теперь может быть текущий объект object. |
Пример #1 Пример использования debug_backtrace()
<?php
// filename: /tmp/a.php
function a_test($str)
{
echo "\nHi: $str";
var_dump(debug_backtrace());
}
a_test('friend');
?>
<?php
// filename: /tmp/b.php
include_once '/tmp/a.php';
?>
Результат аналогичен приведенному ниже, если запустить /tmp/b.php:
Hi: friend
array(2) {
[0]=>
array(4) {
["file"] => string(10) "/tmp/a.php"
["line"] => int(10)
["function"] => string(6) "a_test"
["args"]=>
array(1) {
[0] => &string(6) "friend"
}
}
[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"
}
}