(PHP 4 >= 4.3.0, PHP 5, PHP 7)
debug_backtrace — Выводит стек вызовов функций в массив
$options
= DEBUG_BACKTRACE_PROVIDE_OBJECT
[, int $limit
= 0
]] ) : arraydebug_backtrace() выводит стек вызовов функций PHP в массив.
options
Начиная с PHP 5.3.6, этот аргумент является битовой маской для следующих настроек:
DEBUG_BACKTRACE_PROVIDE_OBJECT | Нужно ли заполнять данные для ключа object. |
DEBUG_BACKTRACE_IGNORE_ARGS | Нужно ли исключить аргументы всех функций/методов в ключе "args" для уменьшения расхода памяти. |
TRUE
или FALSE
, которые
означают, задана настройка
DEBUG_BACKTRACE_PROVIDE_OBJECT
или нет
соответственно.
limit
Начиная с PHP 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
// файл /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:
Привет, друг 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" } }