2012-08-10 14 views
87

Ho circa 40 entità e molte relazioni bidirezionali. Ogni volta che uso var_dump ($ utente) o qualsiasi entità il mio browser viene caricato con troppi dati di matrici e variabili, allora si blocca.Troppi dati con var_dump in symfony2 doctrine2

voglio a che cosa è il problema.

I dati vengono inseriti correttamente. Posso causare problemi nella produzione.

+0

Di quale browser stiamo parlando? –

+3

Stai usando xdebug? In caso contrario, si consideri di usarlo e invece di var_dump basta fare uso del debugger di passo con un IDE come Ecplipse, Netbeans o PHPStorm. Tutto ciò mostrerà i dati delle variabili in modo piacevole. – hakre

+0

Cosa intendi per "arresto anomalo": l'applicazione browser (o scheda) si chiude, o non visualizza alcun risultato o la pagina viene interrotta? – Yuriy

risposta

197

Sostituire var_dump() con il metodo di debug dump() fornito dalla dottrina comune.

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

Funziona su singoli oggetti e raccolte Doctrine e dovrebbe impedire al browser di visualizzare i problemi riscontrati.

+1

grazie amico, che ha funzionato perfettamente – user825904

+0

Funziona anche per più risultati con array – GusDeCooL

+3

Puoi anche 'dump()' con ** MaxDepth **, in 'dump() 'il secondo argomento è ** MaxDepth **. –

2

Il problema è che in una relazione bidirezionale entrambe le entità hanno un collegamento tra loro, quindi durante la visualizzazione dell'entità 1 var_dump dovrà anche stampare tutte le proprietà di entità2, che includono l'entità1 stessa che fornisce un ciclo.

19

ben formattato:

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

I get_object_vars() migliorare la visualizzazione troppo.

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

Basta usare serialize echo ($ user);

0

Con Symfony 2.6 ora è possibile utilizzare solo dump ($ var) nel controller e {{dump (var)}} in twig.

Assicurati di aggiungere questo al tuo file AppKernal.php, nella sezione array ('dev', 'test').

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

Esempio semplice e facile.

var_dump(serialize($Object)); 
+0

Non chiamerei output "serialize" semplice e facile da leggere. –

1

usa dump ($ utente) e puoi vedere il risultato perfetto in Symfony Profiler! buona fortuna

1

Symfony < 2,6

È possibile utilizzare \Doctrine\Common\Util\Debug::dump($variable, $depth); si visualizza l'uscita dottrina senza le informazioni proxy.

Symfony> 2.6

Se si utilizza symfony 2.6 o più, io consiglio vivamente di utilizzare dump(). Mostra un output ben formattato e colorato e puoi espandere/nascondere dinamicamente le righe. enter image description here

Problemi correlati