PHP异常-getTrace将范围解析运算符(:)替换为对象运算符(->;)

PHP异常-getTrace将范围解析运算符(:)替换为对象运算符(->;),php,Php,我正在设计一个简单的异常处理程序,用于我的PHP项目。一直困扰我的问题之一是糟糕的堆栈跟踪,它会截断参数等。因此我决定使用getTrace()-方法以更有用的字符串解析数组。 这样做很好,但我注意到静态方法调用没有正确表示: getTrace(): #3 /system/session.php(38): Session->__construct() #2 /system/session.php(126): Session->instance() getTraceAssString(

我正在设计一个简单的异常处理程序,用于我的PHP项目。一直困扰我的问题之一是糟糕的堆栈跟踪,它会截断参数等。因此我决定使用
getTrace()
-方法以更有用的字符串解析数组。
这样做很好,但我注意到静态方法调用没有正确表示:

getTrace()

#3 /system/session.php(38): Session->__construct()
#2 /system/session.php(126): Session->instance()
getTraceAssString()

#1 /system/session.php(38): Session->__construct()
#2 /system/session.php(126): Session::instance()
…其中,
会话
可能是这样的:

class Session(){
  public static function instance(){}
  public function __construct(){}
}
似乎作用域解析运算符(
)被对象运算符(
->
)替换,而不管发生什么情况,
getTrace()

为什么会这样?我能做点什么吗?我缺少一个参数吗?

找到了!使用时,你有时应该仔细阅读

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

...
isset($frame['class']) ? $frame['class'] . '->' : '',
...
应在哪里:

...
isset($frame['class']) ? $frame['class'] . $frame['type'] : '',
...
找到了!使用时,你有时应该仔细阅读

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

...
isset($frame['class']) ? $frame['class'] . '->' : '',
...
应在哪里:

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

这不会发生在我的系统PHP5.6.12上键入'=>string'::'(长度=2)`PS:类名后没有大括号;)隐马尔可夫模型。。它在我的托管服务器上运行,该服务器也使用5.6.12。。。PS:真实的东西是很好的PSR-1-ed;)调用
Exception::getTrace()
的完整输出是什么?对我来说,这是一个assoc数组的索引数组。从上面给出的示例来看,它看起来像一个普通字符串。谢谢,@m02ph3u5。让我走上正轨:)这不会发生在我的系统PHP5.6.12上键入'=>string'::'(长度=2)`PS:类名后没有大括号;)隐马尔可夫模型。。它在我的托管服务器上运行,该服务器也使用5.6.12。。。PS:真实的东西是很好的PSR-1-ed;)调用
Exception::getTrace()
的完整输出是什么?对我来说,这是一个assoc数组的索引数组。从上面给出的示例来看,它看起来像一个普通字符串。谢谢,@m02ph3u5。让我走上正轨:)我猜你也应该将此作为注释或编辑添加到原始答案中。我猜你也应该将此作为注释或编辑添加到原始答案中。