2012-08-10 14 views
87

Tengo alrededor de 40 entidades y muchas relaciones bidireccionales. Cada vez que uso var_dump ($ user) o cualquier entidad, mi navegador se carga con demasiados datos de matrices y variables, entonces simplemente falla.Demasiada información con var_dump en symfony2 doctrine2

quiero cuál es el problema.

Los datos se insertan bien. ¿Puedo causar problemas en la producción?

+0

¿De qué navegador estamos hablando? –

+3

¿Estás usando xdebug? Si no es así, considere usarlo y en lugar de var_dump solo use el depurador de pasos con un IDE como Ecplipse, Netbeans o PHPStorm. Todos estos mostrarán los datos de las variables muy bien. – hakre

+0

¿Qué quiere decir con "bloqueo" - cierra la aplicación (o pestaña), o no muestra ningún resultado, o la página se interrumpe? – Yuriy

Respuesta

197

Reemplazar var_dump() con el método de depuración dump() proporcionada por doctrina común.

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

Funciona para objetos individuales y colecciones de Doctrina y debe prevenir problemas con el navegador que muestra que está teniendo.

+1

gracias amigo, que funcionó perfectamente – user825904

+0

Funciona para resultados múltiples con matriz también – GusDeCooL

+3

También puede 'volcar()' con ** MaxDepth **, en 'volcado()' segundo argumento es ** MaxDepth **. –

2

El problema es que en una relación bidireccional ambas entidades tienen un enlace entre ellas, así que mientras se muestra la entidad1 var_dump también tendrá que imprimir todas las propiedades de entidad2, que incluyen la entidad1 que le da un bucle.

19

bien formateados:

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

Los get_object_vars() mejorar la visualización también.

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

Sólo tiene que utilizar serializar eco ($ usuario);

0

Con Symfony 2.6 ahora puedes simplemente usar dump ($ var) en tu controlador y {{dump (var)}} en twig.

Asegúrese de agregar esto a su archivo AppKernal.php, en la sección de matriz ('dev', 'prueba').

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

Ejemplo simple y fácil.

var_dump(serialize($Object)); 
+0

No llamaría a la salida 'serialize' simple y fácil de leer. –

1

use dump ($ usuario) y se puede ver el resultado perfecto en Symfony Profiler! buena suerte

1

Symfony < 2,6

Usted puede utilizar \Doctrine\Common\Util\Debug::dump($variable, $depth); que muestra la salida doctrina sin la información del proxy.

Symfony> 2.6

Si está usando Symfony 2.6 o más, recomendamos encarecidamente que utilice dump(). Muestra una salida bien formateada y coloreada, y puede dinámicamente gastar/ocultar filas. enter image description here

Cuestiones relacionadas