🐘

[PHP] xdebugにvar_dumpを省略させないためのコードスニペット

2020/04/05に公開

xdebugがvar_dumpの出力を途中で省略しちゃう問題

PHPでxdebugを有効にしていると、 var_dump() の出力内容が多いときにデフォルトの挙動だと途中以降が省略されます。

出力全体が見たいとき、いちいちxdebugをオフにして実行し直したりしてませんか?

そんなことしなくてもランタイムで制御できるんです。

var_dumpの出力を省略させないためのコードスニペット

結論としては、以下のコードで省略を回避できます👍

ini_set('xdebug.var_display_max_children', '-1');
ini_set('xdebug.var_display_max_data', '-1');
ini_set('xdebug.var_display_max_depth', '-1');

コードスニペットの意味

  • xdebug.var_display_max_children :出力する子要素の数
  • xdebug.var_display_max_data :出力する要素の数
  • xdebug.var_display_max_depth :出力する階層の深さ

をすべて -1 つまり無限に設定しています。

デフォルト値はそれぞれ

  • xdebug.var_display_max_children = 128
  • xdebug.var_display_max_data = 512
  • xdebug.var_display_max_depth = 3

となっています。

Xdebug: Documentation » Variable Display Features
https://xdebug.org/docs/display

まとめ

  • xdebugがvar_dumpの出力を途中で省略しちゃう問題あるけど、出力全体を見たいとき、わざわざxdebugを切らなくても、 xdebug.var_display_max_* 系の設定を変えることでランタイムで省略回避できる
  • とても捗る
GitHubで編集を提案

Discussion