1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 16:22:18 +01:00
Files
archived-doc-ru/reference/errorfunc/functions/debug-backtrace.xml
2024-07-02 10:47:34 +03:00

291 lines
9.3 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: e203b12d7964aa7c729e1f7c26fcbf357fc9fb63 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.debug-backtrace" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>debug_backtrace</refname>
<refpurpose>Генерирует стек вызовов функций</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>debug_backtrace</methodname>
<methodparam choice="opt"><type>int</type><parameter>options</parameter><initializer><constant>DEBUG_BACKTRACE_PROVIDE_OBJECT</constant></initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter>limit</parameter><initializer>0</initializer></methodparam>
</methodsynopsis>
<para>
Функция <function>debug_backtrace</function> генерирует стек вызовов функций PHP.
</para>
</refsect1>
<refsect1 role="parameters"><!-- {{{ -->
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>options</parameter></term>
<listitem>
<para>
Этот параметр — битовая маска для следующих настроек:
<table>
<title>Опции <function>debug_backtrace</function></title>
<tgroup cols="2">
<tbody>
<row>
<entry>DEBUG_BACKTRACE_PROVIDE_OBJECT</entry>
<entry>
Нужно ли заполнять ключ "object" (в выходном массиве).
</entry>
</row>
<row>
<entry>DEBUG_BACKTRACE_IGNORE_ARGS</entry>
<entry>
Нужно ли исключить ключ "args" (из выходного массива) с сопутствующим
исключением всех аргументов функций/методов, чтобы уменьшить расход памяти.
</entry>
</row>
</tbody>
</tgroup>
</table>
<note>
<para>
Возможны четыре комбинации:
<table>
<title>Опции <function>debug_backtrace</function></title>
<tgroup cols="2">
<tbody>
<row>
<entry><code>debug_backtrace()</code></entry>
<entry morerows="2" valign="middle">
Заполняются оба ключа.
</entry>
</row>
<row>
<entry><code>debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT)</code></entry>
</row>
<row>
<entry><code>debug_backtrace(1)</code></entry>
</row>
<row>
<entry><code>debug_backtrace(0)</code></entry>
<entry valign="middle">
Не включается ключ <literal>"object"</literal> и заполняется ключ <literal>"args"</literal>.
</entry>
</row>
<row>
<entry><code>debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS)</code></entry>
<entry morerows="1" valign="middle">
Опускается ключ <literal>"object"</literal> <emphasis>и</emphasis> ключ <literal>"args"</literal>.
</entry>
</row>
<row>
<entry><code>debug_backtrace(2)</code></entry>
</row>
<row>
<entry><code>debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT|DEBUG_BACKTRACE_IGNORE_ARGS)</code></entry>
<entry morerows="1" valign="middle">
Заполняется ключ <literal>"object"</literal> <emphasis>и</emphasis> опускается ключ <literal>"args"</literal>.
</entry>
</row>
<row>
<entry><code>debug_backtrace(3)</code></entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>limit</parameter></term>
<listitem>
<para>
Этим параметром можно ограничить количество возвращаемых
вызовов функций. По умолчанию
параметр (<parameter>limit</parameter>=<literal>0</literal>) — будет выведен весь
стек вызовов.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1><!-- }}} -->
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает массив вложенных ассоциативных массивов (<type>array</type>).
Описание элементов массива приведено ниже:
</para>
<para>
<table>
<title>
Список возможных элементов массивов, возвращаемых функцией
<function>debug_backtrace</function>
</title>
<tgroup cols="3">
<thead>
<row>
<entry>&Name;</entry>
<entry>&Type;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>function</entry>
<entry><type>string</type></entry>
<entry>
Имя текущей функции. Смотрите также
<link linkend="language.constants.predefined">__FUNCTION__</link>.
</entry>
</row>
<row>
<entry>line</entry>
<entry><type>int</type></entry>
<entry>
Текущий номер строки. Смотрите также
<link linkend="language.constants.predefined">__LINE__</link>.
</entry>
</row>
<row>
<entry>file</entry>
<entry><type>string</type></entry>
<entry>
Имя текущего файла. Смотрите также
<link linkend="language.constants.predefined">__FILE__</link>.
</entry>
</row>
<row>
<entry>class</entry>
<entry><type>string</type></entry>
<entry>
Имя текущего <link linkend="language.oop5">класса</link>. Смотрите также
<link linkend="language.constants.predefined">__CLASS__</link>
</entry>
</row>
<row>
<entry>object</entry>
<entry><type>object</type></entry>
<entry>
Текущий <link linkend="language.oop5">объект</link>.
</entry>
</row>
<row>
<entry>type</entry>
<entry><type>string</type></entry>
<entry>
Текущий тип вызова функции. Если это вызов метода объекта, будет
возвращено значение "-&gt;". Если это вызов статического метода класса, то "::".
Если это простой вызов функции, ничего не возвращается.
</entry>
</row>
<row>
<entry>args</entry>
<entry><type>array</type></entry>
<entry>
Если (функция <function>debug_backtrace</function>) вызвана внутри функции,
в этих ключах будут перечислены аргументы функций. Если вызов выполнен внутри включаемого файла,
будут перечислены имена включённых файлов.
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>debug_backtrace</function></title>
<programlisting role="php">
<![CDATA[
<?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';
?>
]]>
</programlisting>
<para>
Результат аналогичен приведённому ниже, если запустить
<filename>/tmp/b.php</filename>:
</para>
<screen>
<![CDATA[
Привет, друг
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"
}
}
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>trigger_error</function></member>
<member><function>debug_print_backtrace</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->