отладка — Что debug_backtrace () точно работает в php?

Работая над одним из моих PHP проект у меня есть функция debug_backtrace() в начале файла кода как <?php debug_backtrace() || die ("Direct access not permitted"); ?> ,

Во время обучения я получил объяснение, что он работает так:

Отладка проблем PHP на веб-сайте Drupal может быть любой, от быстрой
и легко серьезно проблематично. PHP включает в себя функцию отладки
называется debug_backtrace, который распечатает цепочку кода, который
ведет к точке, где вызывается функция backtrace.

И когда я использую var_dump() с debug_backtrace() Я получил следующий результат:

array(2) {
[0]=>
array(3) {
["file"]=>
string(61) "C:\xampp\htdocs\folder_name\templates\default\models\home.php"["line"]=>
int(30)
["function"]=>
string(7) "include"}
[1]=>
array(4) {
["file"]=>
string(37) "C:\xampp\htdocs\folder_name\index.php"["line"]=>
int(146)
["args"]=>
array(1) {
[0]=>
string(61) "C:\xampp\htdocs\folder_name\templates\default\models\home.php"}
["function"]=>
string(7) "include"}
}

Я не понял, что debug_backtrace() Функция точно работает.

Пожалуйста, кто-нибудь объяснить можно только приветствовать. Заранее спасибо.

Изучаемые ссылки:

debug_backtrace () из зарегистрированной функции выключения в PHP

Отладка PHP-кода с помощью debug_backtrace

Назначьте debug_backtrace () переменной в PHP

Печатать PHP Call Stack

Как я могу сохранить трассировку PHP в журнал ошибок?

0

Решение

Приведу простой пример …

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

echo "Start...";
print_r(debug_backtrace());

function t1 ()  {
echo "Start t1...";
print_r(debug_backtrace());

}

function t2()   {
echo "Start t2...";
print_r(debug_backtrace());
t1();
}

echo "before calls...";
print_r(debug_backtrace());
t1();
t2();

Будет выводить …

Start...Array
(
)
before calls...Array
(
)
Start t1...Array
(
[0] => Array
(
[file] => /home/nigel/workspace/PHPTest/TestSource/part3.php
[line] => 22
[function] => t1
[args] => Array
(
)

)

)
Start t2...Array
(
[0] => Array
(
[file] => /home/nigel/workspace/PHPTest/TestSource/part3.php
[line] => 23
[function] => t2
[args] => Array
(
)

)

)
Start t1...Array
(
[0] => Array
(
[file] => /home/nigel/workspace/PHPTest/TestSource/part3.php
[line] => 17
[function] => t1
[args] => Array
(
)

)

[1] => Array
(
[file] => /home/nigel/workspace/PHPTest/TestSource/part3.php
[line] => 23
[function] => t2
[args] => Array
(
)

)

)

Я надеюсь, что это показывает, что все debug_backtrace Функция возвращает то, что уже было вызвано. Итак, когда вы впервые позвоните t1, это просто трассировка стека вызова t1, То же самое для начала t2, но когда t2 звонки t1, трассировка перечисляет вызов t2 а также t1,

Но также, как вы можете видеть, что debug_backtrace от Start.. ничего не показывает, так как нет уровней кода, которые вызвали бы печать этой трассы.

В вашем случае это вызывает debug_backtrace и использует or die() сказать «если debug_backtrace ничего не возвращает, то die()

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector