array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.debug-backtrace.php', 1 => 'debug_backtrace', ), 'up' => array ( 0 => 'ref.errorfunc.php', 1 => 'Функции обработки ошибок', ), 'prev' => array ( 0 => 'ref.errorfunc.php', 1 => 'Функции обработки ошибок', ), 'next' => array ( 0 => 'function.debug-print-backtrace.php', 1 => 'debug_print_backtrace', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/errorfunc/functions/debug-backtrace.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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(1)
debug_backtrace(0)
Не включается ключ "object"
и заполняется ключ"args"
.debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)
Опускается ключ "object"
и ключ"args"
.debug_backtrace(2)
debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS)
Заполняется ключ "object"
и опускается ключ"args"
.debug_backtrace(3)
limit
Этим параметром можно ограничить количество возвращаемых
вызовов функций. По умолчанию
параметр (limit
=0
) — будет выведен весь
стек вызовов.
Функция возвращает массив вложенных ассоциативных массивов (array). Описание элементов массива приведено ниже:
Имя | Тип | Описание |
---|---|---|
function | string | Имя текущей функции. Смотрите также __FUNCTION__. |
line | int | Текущий номер строки. Смотрите также __LINE__. |
file | string | Имя текущего файла. Смотрите также __FILE__. |
class | string | Имя текущего класса. Смотрите также __CLASS__ |
object | object | Текущий объект. |
type | string | Текущий тип вызова функции. Если это вызов метода объекта, будет возвращено значение "->". Если это вызов статического метода класса, то "::". Если это простой вызов функции, ничего не возвращается. |
args | array | Если (функция debug_backtrace()) вызвана внутри функции, в этих ключах будут перечислены аргументы функций. Если вызов выполнен внутри включаемого файла, будут перечислены имена включённых файлов. |
Пример #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" } }