为什么Laravel dd只显示两个级别?

时间:2018-07-04 22:56:57

标签: laravel

当我在Laravel中使用dd($myVar)时,输出仅显示两个级别。为什么会这样?

第一级显示为展开,我可以单击以展开第二级。简单地用array:2来概括第三级(对于具有两个元素的任何数组)。

编辑:

我注意到var_dump()的输出受到类似的限制。我将xdebug深度设置更改为10,ini_set('xdebug.var_display_max_depth', 10),这解决了var_dump中的问题,但没有解决dd中的问题。

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用ctrl+click扩展所有子项,甚至可以使用ctrl+F搜索值和变量

如果它不适合您,则可以创建自己的帮助程序,该帮助程序取决于xdebug配置设置。添加一个新文件“ helpers.php”,然后使用composer.json自动加载

"autoload": {
    "files": [
        "app/helpers.php"
    ]
}

我使用了一个匿名类,您可以创建一个专用类来清理/重用代码

use Symfony\Component\VarDumper\Dumper\CliDumper;
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Illuminate\Support\Debug\HtmlDumper;

function xdebug_dd(...$args)
{
    http_response_code(500);

    $obj = new class {
        public function dump($value)
        {
            if (class_exists(CliDumper::class)) {
                $dumper = new HtmlDumper;

                $dumper->dump((new VarCloner)->cloneVar($value), null, [
                    'maxDepth' => ini_get('xdebug.var_display_max_depth')
                ]);
            } else {
                var_dump($value);
            }
        }
    };


    foreach ($args as $x) {
        $obj->dump($x);
    }

    die(1);
}