PHP异常 - getTrace用对象运算符替换范围分辨率运算符(::)( - >)

时间:2015-08-21 08:37:07

标签: php

我正在设计一个在我的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()是什么。

为什么会这样?我可以为此做点什么,有没有我缺乏的参数?

1 个答案:

答案 0 :(得分:0)

发现它!使用Stack Overflow answers时,您应该仔细阅读。

原始答案使用sprintf()用以下内容替换该类:

...
isset($frame['class']) ? $frame['class'] . '->' : '',
...

应该是:

...
isset($frame['class']) ? $frame['class'] . $frame['type'] : '',
...