xdebug错误消息中参数的自定义格式

时间:2015-02-20 16:48:59

标签: php debugging serialization formatting xdebug

我知道使用Xdebug,您可以更改xdebug.collect_params设置,以便错误消息包含有关调用中使用的参数的更多信息。 (对它有一个很好的解释here

但是,我的对象的字符串表示非常大且不可读。

large and unreadable object representations

我已经有了一些很好的toString实现,只返回一个唯一的id,所以如果我能让xdebug使用__toString()而不是完整的序列化,那将是非常好的。

这是否可以(或参数格式的任何其他自定义)?

我想在理论上我可以尝试通过__sleep()实现自定义表示,但实际上我需要默认的序列化机制来跨请求保存对象。

2 个答案:

答案 0 :(得分:2)

有些工具可以提供直观和交互的方式来显示异常和堆栈跟踪。因此,您可以拥有所有必要的详细信息,并且仍然具有整洁的UI。请考虑以下事项:

调试时,您通常需要尽可能多的(有用的)信息,因此不要删除(此刻)不必要的信息,而是尝试使用默认情况下隐藏信息的库,但确保它在您需要时就在那里。


* Symfony异常处理程序似乎能够独立工作(没有其他依赖于Symfony的判断来自composer.json,尽管我还没有尝试过)。文档说:

  

ExceptionHandler类捕获未捕获的PHP异常并将它们转换为一个不错的PHP响应。在调试模式下,用一些更漂亮和更有用的东西替换默认的PHP / XDebug输出非常有用。

答案 1 :(得分:1)

正如上面的评论所指出的那样:

PHP 5.6支持__debugInfo()。此方法的patch已于2014年12月提交给xdebug回购,并且很快就会发布。

另请参阅:How to get __debugInfo to work with XDebug?