Работая над одним из моих 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
Приведу простой пример …
<?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()
‘
Других решений пока нет …