You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 11如何默认展开dd()输出?配置vardumper自动展开层级

在Laravel 11中配置dd()默认展开及VarDumper层级自动展开

一、Laravel 11设置dd()默认展开输出

Laravel的dd()函数基于Symfony的VarDumper实现,要让它默认展开所有层级的内容,只需配置VarDumper的HtmlDumper默认行为即可。

在Laravel 11中,直接在bootstrap/app.php文件里添加以下代码(放在返回应用实例的代码之前):

use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\HtmlDumper;
use Symfony\Component\VarDumper\VarDumper;

// 自定义HtmlDumper,设置默认展开所有层级
$dumper = new HtmlDumper();
$dumper->setDefaultDepth(-1); // -1表示展开所有层级,也可设置具体数字(如3)指定自动展开层级

// 替换默认的VarDumper处理器,模拟dd()的终止程序行为
VarDumper::setHandler(function ($var) use ($dumper) {
    $cloner = new VarCloner();
    $dumper->dump($cloner->cloneVar($var));
    die;
});

配置完成后,调用dd()时对象或数组的所有层级都会自动展开,无需手动点击。

二、VarDumper原生dd()配置自动展开指定层级

如果你直接使用Symfony VarDumper的dd()函数,配置逻辑和上述一致,核心是通过HtmlDumper::setDefaultDepth()设置自动展开的层级:

  1. 初始化HtmlDumper并指定展开深度:
$dumper = new HtmlDumper();
// 设置自动展开前3层,超过的层级需手动点击展开
$dumper->setDefaultDepth(3);
  1. 替换VarDumper的默认处理器,让原生dd()遵循该配置:
VarDumper::setHandler(function ($var) use ($dumper) {
    $cloner = new VarCloner();
    $dumper->dump($cloner->cloneVar($var));
    exit;
});

将这段代码放在项目启动文件中,之后所有原生dd()调用都会按照设置的层级自动展开。

注意:setDefaultDepth()参数为-1时会展开所有层级;设置为具体数字N,则自动展开前N层,更深层级需手动操作。


内容的提问来源于stack exchange,提问作者Alejandro De Castro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:22:11