Почему Laravel dd показывает только два уровня? - PullRequest
0 голосов
/ 05 июля 2018

Когда я использую dd($myVar) в Laravel, на выходе отображаются только два уровня. Почему это так?

Первый уровень показан развернутым, и я могу щелкнуть, чтобы развернуть второй уровень. Третий уровень просто суммируется с чем-то вроде array:2 (в случае любого массива с двумя элементами).

EDIT:

Я заметил, что вывод var_dump() был так же ограничен. Я изменил настройку глубины xdebug на 10, ini_set('xdebug.var_display_max_depth', 10), которая исправила проблему в var_dump, но не dd.

1 Ответ

0 голосов
/ 05 июля 2018

Самый простой способ - использовать 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...