我正在设计一个在我的PHP项目中使用的简单异常处理程序。一直困扰我的事情之一是糟糕的堆栈跟踪,它会截断参数等。所以我决定使用getTrace()
- 方法将数组解析为更有用的字符串。
这样做很好,但我注意到静态方法调用没有正确表示:
getTrace()
#3 /system/session.php(38): Session->__construct()
#2 /system/session.php(126): Session->instance()
getTraceAsString()
:
#1 /system/session.php(38): Session->__construct()
#2 /system/session.php(126): Session::instance()
...其中Session
可能如此:
class Session(){
public static function instance(){}
public function __construct(){}
}
似乎范围解析运算符(::
)被对象运算符(->
)替换,无论getTrace()
是什么。
为什么会这样?我可以为此做点什么,有没有我缺乏的参数?
答案 0 :(得分:0)
原始答案使用sprintf()
用以下内容替换该类:
...
isset($frame['class']) ? $frame['class'] . '->' : '',
...
应该是:
...
isset($frame['class']) ? $frame['class'] . $frame['type'] : '',
...