这有点难以解释,但代码可能更清晰:
// class.php
class Foo
{
public function bar ()
{
}
}
// test.php
$foo = new Foo;
$foo->bar(); // e.g., for some reason this returns an error hence error handler will be triggered
这是一个简化的示例,但test.php的嵌套可能更深。 我的自定义错误处理程序如何告诉我test.php第2行中发生了错误?
我目前正在使用debug_backtrace()
,但test.php的数组索引会根据对象的深度或require()
的数量
有没有办法确定这一点,无论函数调用的嵌套有多深?
答案 0 :(得分:1)
您可以打印debug_backtrace()
,它将生成所有来电者的完整数组,包括文件和行号。
<?php
class Test {
public function debug() {
print_r(debug_backtrace());
}
}
function print_debug() {
$test = new Test();
$test->debug();
}
header("Content-type: text/plain");
print_debug();
Array
(
[0] => Array
(
[file] => D:\Websites\htdocs\tests\index.php
[line] => 11
[function] => debug
[class] => Test
[object] => Test Object
(
)
[type] => ->
[args] => Array
(
)
)
[1] => Array
(
[file] => D:\Websites\htdocs\tests\index.php
[line] => 14
[function] => print_debug
[args] => Array
(
)
)
)
您还可以尝试抛出异常,并允许它冒泡,它会杀死您的脚本,显示完整的回溯。看看它是否适合你。