symfony2 doctrine2のvar_dumpでデータが多すぎます


100

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

私は問題をいただきたいです。

データは正常に挿入されています。本番環境で問題が発生する可能性がありますか?


どのブラウザについて話しているのですか?
マダラのゴースト

3
xdebugを使用していますか?そうでない場合は、それを使用することを検討してください。var_dumpの代わりに、Ecplipse、Netbeans、PHPStormなどのIDEでステップデバッガを使用してください。これらはすべて、変数データを適切に表示します。
hakre

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

私のブラウザーは、すべての私のエンティティなどを含む変数データの非常に長いページを表示します。それは決して終わらないループに入るように見えます。私はbotf firefoxとchromeを試しました。関係のない他のクラスを試してみると、問題なく動作しますが、多くの関係でコンピュータがフリーズします。私はそのタスクを終了しなければなりませんでした
ミラージュ

必要最低限​​のクラスしかなく、ブラウザもクラッシュしました。私はこれらすべての遅れたデフォルトを嫌っています。
ChocoDeveloper 2012

回答:


221

var_dump()Doctrine Commonが提供するデバッグメソッドdump()で置き換えます。

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

それは単一のオブジェクトとDoctrineのコレクションで機能し、あなたが抱えている問題をブラウザが表示するのを防ぎます。


5
あなたはまた、可能dump()MAXDEPTH、中dump()二番目の引数であるMAXDEPTH
MBカカディヤ2013

3
phpエラーログにデバッグ出力を含める場合は、以下を使用します。error_log(print_r(\Doctrine\Common\Util\Debug::export($variable, $depth),1)); 毎回入力するのはかなり面倒ですが、そのためのマクロを簡単に作成できます。
Andrea Sprega 2014年

この機能はとても役に立ちます!ブラウザのクラッシュからも私を救った。
Ren



4

問題は、双方向の関係では両方のエンティティが相互にリンクしているため、entity1を表示している間、var_dumpはエンティティ2のすべてのプロパティを出力する必要があることです。


これが発生する理由を説明する唯一の答えです。
user2342558

4

symfony <2.6

\Doctrine\Common\Util\Debug::dump($variable, $depth);プロキシ情報なしでdoctrineの出力を表示するために使用できます。

symfony> 2.6

symfony 2.6以降を使用してdump()いる場合は、を使用することを強くお勧めします。うまくフォーマットされ、色分けされた出力が表示され、行を動的に消費/非表示にすることができます。 ここに画像の説明を入力してください



2

Symfony 2.6では、コントローラでdump($ var)を使用し、小枝で{{dump(var)}}を使用できます。

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

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


1

echo serialize($ user);を使用するだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.