debug_backtrace

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

debug_backtraceВыводит стек вызовов функций в массив

Описание

debug_backtrace ([ int $options = DEBUG_BACKTRACE_PROVIDE_OBJECT [, int $limit = 0 ]] ) : array

debug_backtrace() выводит стек вызовов функций PHP в массив.

Список параметров

options

Начиная с PHP 5.3.6, этот аргумент является битовой маской для следующих настроек:

Опции debug_backtrace()
DEBUG_BACKTRACE_PROVIDE_OBJECT Нужно ли заполнять данные для ключа object.
DEBUG_BACKTRACE_IGNORE_ARGS Нужно ли исключить аргументы всех функций/методов в ключе "args" для уменьшения расхода памяти.
До версии 5.3.6 принимаются только значения TRUE или FALSE, которые означают, задана настройка DEBUG_BACKTRACE_PROVIDE_OBJECT или нет соответственно.

limit

Начиная с PHP 5.4.0, этот аргумент используется для ограничения количества вызовов функций, которые будут выведены. По умолчанию (limit=0) будет выведен весь стек вызовов.

Возвращаемые значения

Возвращает массив вложенных ассоциативных массивов (array). Описание элементов массива приведено ниже:

Список возможных элементов массивов, возвращаемых функцией debug_backtrace()
Имя Тип Описание
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"
  }
}

Смотрите также

  • trigger_error() - Вызывает пользовательскую ошибку/предупреждение/уведомление
  • debug_print_backtrace() - Выводит стек вызовов функций