johnykvsky / jkdumper
JKDumper 是一款单兵作战快速简便的调试-日志工具
0.0.3
2018-01-11 19:37 UTC
Requires
- php: ^7.0
- katzgrau/klogger: dev-master
Requires (Dev)
- phpunit/phpunit: ^6.5
- squizlabs/php_codesniffer: ^3.2
This package is auto-updated.
Last update: 2024-09-15 22:22:07 UTC
README
JKDumper 是一款单兵作战快速简便的调试-日志工具。适用于
- 遗留应用,其中你有面条式的代码
- 新项目,其中你需要通过4个服务注入日志器才能一次性输出一些变量。
JKDumper 是一个包含可选日志库的单文件。是的,它使用 singleton 实例(), 是的,它有静态方法 - 它仅仅是一个工具,它需要在任何糟糕的代码中都非常简单易用。
安装
通过 Composer
$ composer require johnykvsky/jkdumper
应该在 PHP 5.6 上运行良好,但我没有检查过。只需更改 composer.json 中的所需 PHP 版本,可能还需要删除开发包。
特性
- 将变量输出到屏幕,基本格式化以便阅读
- 检测是否从 CLI 运行(用于正确格式化)
- 可选:将变量记录到文件(例如,当我们要检查某个过程,而不是单个项目时)
- 可选:通过 microtime() 进行简单基准测试
如果设置了日志记录器,则基准测试将被记录。库使用 var_dump 进行数据转储,如果需要,它将禁用 Xdebug 'overload_var_dump'(仅适用于单次转储,之后将恢复)。
使用方法
TL/DR:创建一个函数,例如,在自动加载之后,是一种很好的简化方式
require '../vendor/autoload.php';
if (!function_exists('dde')) {
function dde($var, $die = false) {
\johnykvsky\Utils\JKDumper::instance()->vdump($var, true);
if ($die) {
die;
}
}
}
这将使我们能够将变量输出到屏幕,并可选地停止进一步的执行(第二个参数)
dde($myVariable);
dde($myOtherVariable,1);
完整示例
//dump variables: $dumper = new \johnykvsky\Utils\JKDumper(); echo $dumper->vdump('test'); //or, better for dirty debugging: echo \johnykvsky\Utils\JKDumper::instance()->vdump('test'); //if you pass true as second parameter to vdump, result will be in <pre></pre> tags (if in CLI, PHP_EOL will be added) echo \johnykvsky\Utils\JKDumper::instance()->vdump('test', true); //result: <pre>test</pre> //benchmark start, parameter is optional \johnykvsky\Utils\JKDumper::instance()->startTime('usersQuery'); //info is also written into logs, if logger is set //do stomething, lets rest sleep(3); //stop and check results - we can run few benchmarks in the same time and get results by parameter name, //so passed parameter must be the same as we provided in startTime echo \johnykvsky\Utils\JKDumper::instance()->endTime('usersQuery'); //this is also written into logs, if logger is set //logging, somewhere in the code we need to create logger and pass it to JKDumper //usually it's good to do it somewhere at the beginning. index.php? base controller? //for JKLogger parameter is path where we want to store logs $logger = new \johnykvsky\Utils\JKLogger(__DIR__.'/files'); \johnykvsky\Utils\JKDumper::instance()->setLogger($logger); //and now we ca dump variables to logs anywhere, anytime \johnykvsky\Utils\JKDumper::instance()->log($request); //you can store results: $data['req'] = \johnykvsky\Utils\JKDumper::instance()->vdump($request); $data['res'] = \johnykvsky\Utils\JKDumper::instance()->vdump($response); //and log them later in one go: \johnykvsky\Utils\JKDumper::instance()->log($data);
日志文件示例
[2017-12-25 22:55:48.108006] [usersQuery] Started timing usersQuery
[2017-12-25 22:55:48.108288] [usersQuery] Finished debug in 0.279 milliseconds
[2017-12-25 22:55:48.124536] [debug] 'test'
查看日志库以了解其工作方式和可定制方式是很好的: jklogger
这是我选择的日志记录器,但它可以被任何与 PSR-3 LoggerInterface 兼容的日志记录器替换
测试
$ composer test
代码检查
$ composer phpstan $ composer phpstan-max
安全
如果您发现任何与安全相关的问题,请通过电子邮件 johnykvsky@protonmail.com 联系,而不是使用问题跟踪器。
致谢
- johnykvsky
- [katzgrau][link-klogger]
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。