squirrelphp / debug
调试功能:创建包含原始调用数据和清洗函数参数及其他输出数据的异常
Requires
- php: >=8.0
- ext-mbstring: *
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.3
- captainhook/plugin-composer: ^5.0
- phpunit/phpunit: ^9.0
README
提供回溯功能,使库能够找到问题的真实起源(而不是问题出现的地方),即使不知道库/组件在什么上下文中使用,也包括在抛出异常时添加起源数据的基本类。还提供了一种简单的方法来以简化的形式转储调试数据和函数参数。这是一个为其他squirrel库创建的辅助库,但它在任何库或应用程序中都很实用。
安装
composer require squirrelphp/debug
查找起源方法调用
当使用库和抽象时,通常不太关注问题发生的地方(导致异常或警告),而是在应用程序中相关调用是在哪个库/组件中做出的,然后导致问题。
Squirrel\Debug\Debug::findOrigin
通过调试回溯找到导致当前应用程序点的相关方法调用。您可以(并且应该)提供它应该忽略的类/接口和命名空间(以回溯更远并找到它之前的方法调用)。此方法返回一个Origin对象,其中包含起源的文件和行以及方法调用(及其参数)。
创建起源异常
Squirrel\Debug\Debug::createException
使用 Squirrel\Debug\Debug::findOrigin
来找到当前问题的起源,然后创建一个OriginException(这是一个包含起源额外信息的异常)。您应该创建自己的异常类,该类扩展OriginException,以便您可以在应用程序/库中处理特定问题。
清洗数据和参数
转储某些形式的调试数据是一个常见需求,但通常比预期的更麻烦。在现代化的框架中使用对象转储数据时,结果转储可以非常大,以至于超过PHP内存限制,使问题更难发现而不是更容易。此外,转储中的二进制数据可能使您无法看到任何有用的信息。
Squirrel\Debug\Debug::sanitizeData
和 Squirrel\Debug\Debug::sanitizeArguments
创建不包含对象数据的小型转储:它们只包含对象类名,将二进制数据显示为十六进制字符串,并显示资源类型。数组以PHP数组表示法显示,因此输出对于PHP开发人员来说很容易阅读。所有其他数据类型都完全显示(字符串、整数、浮点数、布尔值、null)。
Squirrel\Debug\Debug::sanitizeArguments
由 Squirrel\Debug\Debug::createException
内部使用来显示导致异常的起源调用,这就是为什么该功能被添加到这个库中的原因。