xdebug 错误消息中参数的自定义格式
custom formatting of parameters in xdebug error messages
我知道您可以使用 Xdebug 更改 xdebug.collect_params
设置,以便错误消息包含有关调用中使用的参数的更多信息。 (对此有很好的解释here)
但是,我的对象的字符串表示非常大且不可读。
我已经有一些很好的 toString 实现,它们只是 returns 一个唯一的 id,所以如果我能让 xdebug 使用 __toString()
而不是完整的序列化,那就太好了。
这(或参数格式的任何其他自定义)可能吗?
我想理论上我可以尝试通过 __sleep()
实现自定义表示,但实际上我需要默认序列化机制来跨请求保存对象。
有一些工具可以提供直观和交互式的方式来显示异常和堆栈跟踪。因此,您可以获得所有必要的详细信息,并且仍然保持整洁 UI。考虑以下因素:
- Whoops (Demo)
- NetteDebug (Demo)
- Symfony\Debug *
调试时,您通常需要尽可能多的(有用的)信息,因此与其删除(目前)不必要的信息,不如尝试使用 隐藏 的库默认情况下的信息,但确保它在您需要时就在那里。
* Symfony 异常处理程序似乎能够独立工作(从 composer.json 判断 Symfony 没有其他依赖项,尽管我还没有尝试过)。文档说:
The ExceptionHandler class catches uncaught PHP exceptions and converts them to a nice PHP response. It is useful in debug mode to replace the default PHP/XDebug output with something prettier and more useful.
正如上面评论中指出的:
PHP 5.6 支持 __debugInfo(). A patch 因为此方法已于 2014 年 12 月提交到 xdebug 仓库,应该很快就会发布。
另请参阅:How to get __debugInfo to work with XDebug?
我知道您可以使用 Xdebug 更改 xdebug.collect_params
设置,以便错误消息包含有关调用中使用的参数的更多信息。 (对此有很好的解释here)
但是,我的对象的字符串表示非常大且不可读。
我已经有一些很好的 toString 实现,它们只是 returns 一个唯一的 id,所以如果我能让 xdebug 使用 __toString()
而不是完整的序列化,那就太好了。
这(或参数格式的任何其他自定义)可能吗?
我想理论上我可以尝试通过 __sleep()
实现自定义表示,但实际上我需要默认序列化机制来跨请求保存对象。
有一些工具可以提供直观和交互式的方式来显示异常和堆栈跟踪。因此,您可以获得所有必要的详细信息,并且仍然保持整洁 UI。考虑以下因素:
- Whoops (Demo)
- NetteDebug (Demo)
- Symfony\Debug *
调试时,您通常需要尽可能多的(有用的)信息,因此与其删除(目前)不必要的信息,不如尝试使用 隐藏 的库默认情况下的信息,但确保它在您需要时就在那里。
* Symfony 异常处理程序似乎能够独立工作(从 composer.json 判断 Symfony 没有其他依赖项,尽管我还没有尝试过)。文档说:
The ExceptionHandler class catches uncaught PHP exceptions and converts them to a nice PHP response. It is useful in debug mode to replace the default PHP/XDebug output with something prettier and more useful.
正如上面评论中指出的:
PHP 5.6 支持 __debugInfo(). A patch 因为此方法已于 2014 年 12 月提交到 xdebug 仓库,应该很快就会发布。
另请参阅:How to get __debugInfo to work with XDebug?