2012-08-10 107 views
87

我有大約40個實體和許多雙向關係。 每當我使用var_dump($ user)或者任何實體時,我的瀏覽器會被加載太多數組和變量的數據,那麼它就會崩潰。symfony2中var_dump的數據太多doctrine2

我想要什麼的問題。

的數據被插入細。我可以在生產中引起問題嗎?

+0

,我們談論的是什麼瀏覽器? – 2012-08-10 12:57:14

+3

你使用xdebug嗎?如果沒有,請考慮使用它,而不是var_dump,只需使用帶有Ecplipse,Netbeans或PHPStorm等IDE的分步調試器即可。所有這些都會很好地顯示變量數據。 – hakre 2012-08-10 12:57:20

+0

「崩潰」是什麼意思 - 瀏覽器應用程序(或選項卡)關閉,還是顯示沒有結果,或頁面中斷? – Yuriy 2012-08-10 12:57:33

回答

197

替換var_dump()用調試方法dump()由Doctrine Common提供。

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

它適用於單個對象和Doctrine集合,並應防止瀏覽器顯示您遇到的問題。

+1

感謝好友,完美的工作 – user825904 2012-08-13 12:59:57

+0

它適用於多個結果與數組 – GusDeCooL 2013-10-16 09:16:23

+3

你也可以用** MaxDepth **,dump()'第二個參數是** MaxDepth **轉儲()。 – 2013-12-02 09:26:59

2

的問題是,在一個雙向的關係,兩個實體有一個鏈接到對方,所以在顯示使用實體的var_dump也將打印ENTITY2的所有特性,包括ENTITY1本身給你一個循環。

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

只是使用 echo serialize($ user);

0

隨着Symfony的2.6現在你只需使用dump($ VAR)在你的控制器和{{轉儲(VAR)}}在樹枝。

確保它添加到您的AppKernal.php文件,數組(「開發」,「測試」)部分。

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

簡單而簡單的例子。

var_dump(serialize($Object)); 
+0

我不會稱'serialize'輸出簡單易讀。 – 2017-12-12 18:21:06

1

使用dump($ user),您可以在Symfony Profiler中看到完美的結果!好運

1

Symfony的< 2.6

你可以用它\Doctrine\Common\Util\Debug::dump($variable, $depth);學說顯示輸出,而不代理信息。

的Symfony> 2.6

如果您正在使用的symfony 2.6以上,我強烈建議你用dump()。 它顯示一個格式良好和顏色的輸出,並且您可以動態擴展/隱藏行。 enter image description here