PHP大对象调试利器

PHP现代的框架,比如Yii、Laravel、或者是Swoole 的企业级框架Hyperf,都不约而同的使用了依赖注入、控制反转的设计模式。 这对于开发来讲说,如何注入对象和获取对象,变成了黑盒。DI容器装载了APP应用的所有的服务,当我们去调试代码时,通常会被海量的打印信息所吓到。面对冗余的信息,实际上大多数时候,我们已经准备放弃了去一探究竟的想法。

工欲善其事必先利其器,下面我们利用Symfonyvar_dump组件来满足简明扼要的查看调试对象的需求。

1、引入 VarDumper 组件

composer require symfony/var-dumper

2、装饰VarDumper

# 要放在 require BASE_PATH . '/vendor/autoload.php'; 之后
VarDumper::setHandler(function ($var) {
    $cloner = new VarCloner();
    //$cloner->setMaxItems(2);  // 设置一个嵌套级别(past the first nesting level)被克隆的元素的最大值
    $cloner->setMinDepth(1);  // 在深度上的剥离限制。
    $cloner->setMaxItems(5);
    $dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper();
    $dumper->dump($cloner->cloneVar($var));
});

具体的setMaxItems展示迭代元素数量 和 setMinDepth 深度信息。可以根据具体的需要调整。

参考文档: VarDumper组件 VarDumper组件高级用法

用法:在任何需要打印的地方调用如下函数

dump($obj);

3、比较效果 var_dumpdump 的区别

dump 截图,展示结果速度非常快。只展示了简明扼要的结构信息。帮助快速了解对象信息。

dump结果截图

var_dump 截图,展示结果速度非常慢,花费了快一分钟。展示了对象内的所有信息,根本找不到自己想要寻找的信息。

var_dump 截图

posted @ 2020-08-12 20:45  roverliang  阅读(581)  评论(0编辑  收藏  举报