PHP现代的框架,比如Yii、Laravel、或者是Swoole 的企业级框架Hyperf,都不约而同的使用了依赖注入、控制反转的设计模式。 这对于开发来讲说,如何注入对象和获取对象,变成了黑盒。DI容器装载了APP应用的所有的服务,当我们去调试代码时,通常会被海量的打印信息所吓到。面对冗余的信息,实际上大多数时候,我们已经准备放弃了去一探究竟的想法。
工欲善其事必先利其器,下面我们利用Symfony
的 var_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_dump
与 dump
的区别
dump 截图,展示结果速度非常快。只展示了简明扼要的结构信息。帮助快速了解对象信息。
var_dump 截图,展示结果速度非常慢,花费了快一分钟。展示了对象内的所有信息,根本找不到自己想要寻找的信息。