Как получить xdebug var_dump для отображения полного объекта / массива - PullRequest
287 голосов
/ 03 апреля 2012

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

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

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

Ответы [ 6 ]

555 голосов
/ 03 апреля 2012

Это настраиваемые переменные в 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 описаны в официальной документации .

35 голосов
/ 10 мая 2014

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

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

return json_encode($myvar);

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

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

error_log(json_encode($myvar));

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

13 голосов
/ 10 сентября 2013

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

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

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

 +d( $variable ); // append `+` to the dump call
10 голосов
/ 26 ноября 2015

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

<code>echo "<pre>";
print_r($array);
echo "
";
6 голосов
/ 03 апреля 2012

Оформление заказа Настройки X_debbug var_dump , в частности значения этих настроек:

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
1 голос
/ 11 мая 2018

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

...