Как получить дамп xdebug var для отображения полного объекта/массива


Я использую xdebug (php_xdebug-2.1.2-5.3-vc9.dll ) на ВАМПЕ. Когда я использую var_dump для большого объекта или переменной, он не отображает полную переменную.

array
'node' => 
  array
    'my_form' => 
      array
        'form' => 
          array
            ...

Без xdebug он показывает, как и следовало ожидать. Я просмотрел документацию, но не увидел решения. Кто-нибудь знает, как я могу это исправить, чтобы xdebug var_dump показывал полный объект ?

 261
Author: dayuloli, 2012-04-03

6 answers

Это настраиваемые переменные в php.ini:

; with sane limits
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024 


; with no limits
; (maximum nesting is 1023)
xdebug.var_display_max_depth = -1 
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1 

Конечно, они также могут быть установлены во время выполнения с помощью ini_set(), что полезно, если вы не хотите изменять php.ini и перезапускать свой веб-сервер, но вам нужно быстро изучить что-то более глубоко.

ini_set('xdebug.var_display_max_depth', '10');
ini_set('xdebug.var_display_max_children', '256');
ini_set('xdebug.var_display_max_data', '1024');

Настройки Xdebug описаны в официальной документации.

 500
Author: Michael Berkowski, 2018-09-20 11:03:47

Я знаю, что это очень старый пост, но я подумал, что это все еще может быть полезно.

Если вам удобно читать формат json, вы можете заменить свой var_dump на:

return json_encode($myvar);

Я использовал это, чтобы помочь устранить неполадки в службе, которую я создавал, которая имеет несколько глубоко вложенных массивов. Это вернет каждый уровень вашего массива, ничего не усекая и не требуя от вас изменения файла php.ini.

Кроме того, поскольку данные json_encoded являются строкой, это означает, что вы можно легко записать это в журнал ошибок

error_log(json_encode($myvar));

Возможно, это не лучший выбор для каждой ситуации, но это выбор!

 30
Author: Chris Schmitz, 2014-05-09 21:08:15

Или вы можете использовать альтернативу:

Https://github.com/kint-php/kint

Он работает с нулевой настройкой и в любом случае имеет гораздо больше функций, чем var_dump Xdebug. Чтобы обойти вложенный предел на лету с помощью Kint, просто используйте

 +d( $variable ); // append `+` to the dump call
 11
Author: raveren, 2017-07-24 20:03:18

Я сейчас уже поздно, но это может быть полезно:

echo "<pre>";
print_r($array);
echo "</pre>";
 8
Author: 0x58, 2015-11-26 12:33:16

Проверка Параметров var_dump Xdebbug, в частности значений этих параметров:

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
 5
Author: Captain Insaneo, 2013-08-27 13:54:10

Я хотел бы порекомендовать var_export($array) - он не показывает типы, но генерирует синтаксис, который вы можете использовать в своем коде:)

 0
Author: Nino Škopac, 2018-05-11 01:56:33