Как получить xdebug var_dump для отображения полного объекта / массива
Я использую 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
показывает полный объект?
7 ответов
Это настраиваемые переменные в 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');
Я знаю, что это супер старый пост, но я подумал, что это может быть полезно.
Если вам удобно читать формат json, вы можете заменить ваш var_dump следующим:
return json_encode($myvar);
Я использовал это, чтобы помочь устранить неполадки в службе, которую я строил, которая имеет несколько глубоко вложенных массивов. Это вернет каждый уровень вашего массива без усечения чего-либо или необходимости изменения файла php.ini.
Кроме того, поскольку данные json_encoded являются строкой, это означает, что вы можете легко записать их в журнал ошибок.
error_log(json_encode($myvar));
Возможно, это не лучший выбор для каждой ситуации, но это выбор!
Я сейчас уже поздно, но это может быть полезно:
echo "<pre>";
print_r($array);
echo "</pre>";
Или вы можете использовать альтернативу:
https://github.com/kint-php/kint
Он работает с настройкой нуля и имеет гораздо больше возможностей, чем Xdebug's var_dump. Чтобы обойти вложенный лимит на лету с Kint, просто используйте
+d( $variable ); // append `+` to the dump call
Проверьте настройки var_dump Xdebbug, в частности значения этих настроек:
xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
Я хотел бы рекомендовать var_export($array)
- он не показывает типы, но генерирует синтаксис, который вы можете использовать в своем коде:)
Иногда var_export в файле может быть очень полезным.
file_put_contents(__DIR__.'/temp.txt', var_export($var, true), FILE_APPEND);
Например, если вы что-то отлаживаете на рабочем сервере.