2012-08-10 9 views
87

私は約40のエンティティと多くの双方向関係を持っています。 私はvar_dump($ user)または任意のエンティティを使用するたびに、ブラウザに配列や変数のデータが大量に読み込まれると、クラッシュしました。symfony2のvar_dumpでデータが多すぎます。doctrine2

私は問題を解決したいと思います。

データが正しく挿入されています。プロダクションで問題を起こすことはできますか?

+0

どのブラウザが話していますか? –

+3

xdebugを使用していますか?そうでなければ、それを使うことを考え、var_dumpの代わりに、Ecplipse、Netbeans、PHPStormのようなIDEを使ってステップデバッガを使うだけです。これらはすべて変数データをうまく表示します。 – hakre

+0

「クラッシュする」とはどういう意味ですか?ブラウザアプリケーション(またはタブ)が閉じるか、結果が表示されない、またはページが中断されていますか? – Yuriy

答えて

197

var_dump()を、Doctrine Commonが提供するデバッグ方法dump()で置き換えます。

\Doctrine\Common\Util\Debug::dump($user); 

これは単一のオブジェクトとDoctrineコレクションで機能し、ブラウザの表示に関する問題を防止する必要があります。

+1

ありがとうございましたbuddyは完璧に働いています – user825904

+0

これは配列で複数の結果にも作用します – GusDeCooL

+3

** dump()は** MaxDepth **で 'dump()'、第2引数は 'MaxDepth ** 'です。 –

2

両方のエンティティが相互にリンクしているので、entity1を表示しているときに、var_dumpはエンティティ2のすべてのプロパティも出力する必要があります。ウェルフォーマット

19

echo '<pre>'; 
\Doctrine\Common\Util\Debug::dump($user, $recurciveLevelToDisplay); 
echo '</pre>'; 
1

get_object_vars()があまりにも視覚化を向上させます。

echo "<pre>"; 
\Doctrine\Common\Util\Debug::dump(get_object_vars($user)); 
1

だけ エコーにserialize($ユーザー)を使用します。

0

Symfony 2.6では、コントローラでdump($ var)を使用し、twigで{{dump(var)}}を使用できるようになりました。

これをAppKernal.phpファイルの配列( 'dev'、 'test')セクションに必ず追加してください。

$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle(); 
3

シンプルで簡単な例。

var_dump(serialize($Object)); 
+0

私は 'シリアライズ'出力をシンプルで読みやすいとは呼んでいません。 –

1

dump($ user)を使用すると、Symfony Profilerで完璧な結果が得られます!幸運

1

symfonyは< 2.6

あなたはそれがプロキシ情報なし教義の出力を表示\Doctrine\Common\Util\Debug::dump($variable, $depth);を使用することができます。あなたがdump()を使用する

symfonyは> 2.6

あなたはsymfonyの2.6以上を使用している場合、私は強くアドバイス。 整形式で色付きの出力が表示され、行を動的に使用/非表示できます。 enter image description here

関連する問題