web-dev-qa-db-ja.com

xdebug var_dumpにオブジェクト/配列全体を表示させる方法

WAMPxdebug (php_xdebug-2.1.2-5.3-vc9.dll)を使用しています。ラージオブジェクトまたは変数に対してvar_dumpを使用すると、完全な変数が表示されません。

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

Xdebugがなければ、予想通りに表示されます。私はドキュメンテーションを見ましたが、解決策を見ませんでした。 xdebug var_dumpfullオブジェクトを表示するように修正する方法を誰かが知っていますか?

284
dm03514

これらは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を変更してWebサーバを再起動したくないが、何かをもっと深く調べる必要がある場合に便利です。

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の設定は公式文書で説明されています

550

私はこれが超古い投稿であることを知っています、しかし私はこれがまだ役に立つかもしれないと考えました。

Jsonフォーマットを読むのに慣れていれば、var_dumpを次のように置き換えることができます。

return json_encode($myvar);

私はこれまでに構築してきたサービスのトラブルシューティングに役立てています。これにより、何も切り捨てたりphp.iniファイルを変更したりすることなく、配列のすべてのレベルが返されます。

また、json_encodedデータは文字列なので、エラーログに簡単に書き込むことができます。

error_log(json_encode($myvar));

それはおそらくすべての状況にとって最良の選択ではありませんが、それは選択です!

34
Chris Schmitz

あるいは別の方法を使うこともできます。

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

とにかくゼロ設定で動作し、Xdebugのvar_dumpよりもはるかに多くの機能を持っています。 Kintを使ってネストした制限を回避するには、単に次のようにします。

 +d( $variable ); // append `+` to the dump call
12
raveren

私は今これが遅れていますが、それはいくらか役に立つかもしれません:

echo "<pre>";
print_r($array);
echo "</pre>";
9
0x58

チェックアウト Xdebbugのvar_dump設定 、特にこれらの設定の値:

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
5
Captain Insaneo

var_export($array)をお勧めします - 型は表示されませんが、コードで使用できる構文が生成されます。

0
Nino Škopac