我有几个类(a,b,c等)扩展了一个名为mother的抽象类。所有的儿子"使用方法"保存":
<?php
class mother {
public function save() {
echo "Mother saves!\n";
debug_print_backtrace();
}
}
class a extends mother {
public function save() {
echo "Calling save from A\n";
parent::save();
}
}
$test = new a;
$test->save();
?>
如果你运行这段代码,debug_print_backtrace的结果非常干净,这正是我需要的:
#0 mother->save() called at [/home/xfiddlec/public_html/main/code_44364601.php:13] #1 a->save() called at [/home/xfiddlec/public_html/main/code_44364601.php:18]
问题是,如果你正在使用一个框架(我使用Zend2),堆栈跟踪超过1MB,一个巨大的字符串。如果有办法我可以限制跟踪覆盖范围?对于我的应用程序有文件,扩展母亲的类和行的名称是足够好的。
答案 0 :(得分:0)
如果我理解正确的问题答案很简单。抛出并捕获异常
try{
throw new Exception();
}catch( Exception $e ){
echo $e->getTraceAsString();
}
这是我用于调试的巧妙技巧。此外,您可以将跟踪作为数组获取并使用切片或其他内容。