Demasiados datos con var_dump en symfony2 doctrine2

100

Tengo alrededor de 40 entidades y muchas relaciones bidireccionales. Siempre que uso var_dump ($ user) o cualquier entidad, mi navegador se carga con demasiados datos de matrices y variables, entonces simplemente falla.

Quiero saber cuál es el problema.

Los datos se están insertando bien. ¿Puedo causar problemas en producción?

Espejismo
fuente
¿De qué navegador estamos hablando?
Madara's Ghost
3
¿Estás usando xdebug? Si no, considere usarlo y en lugar de var_dump simplemente 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
¿Qué quieres decir con "fallar"? ¿Se cierra la aplicación (o pestaña) del navegador, no muestra ningún resultado o la página se interrumpe?
Yuriy
mi navegador muestra una página muy larga de datos variables con todas mis entidades y todo eso. parece que va en un bucle sin fin. Intenté botf firefox y chrome. si pruebo cualquier otra clase que no tenga relación, entonces funciona bien, pero con muchas relaciones congela la computadora. Tuve que terminar la tarea que
Mirage
Tengo una clase básica y mi navegador también se bloqueó. Odio todos estos incumplimientos retrasados.
ChocoDeveloper

Respuestas:

221

Reemplaza var_dump () con el método de depuración dump () proporcionado por Doctrine Common .

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

Funciona para objetos individuales y colecciones de Doctrine y debería evitar que el navegador muestre los problemas que tiene.

mgiagnoni
fuente
5
También puede hacerlodump() con MaxDepth , en el dump()segundo argumento está MaxDepth .
MB Kakadiya
3
Si prefiere tener la salida de depuración en su registro de errores de php, use lo siguiente: error_log(print_r(\Doctrine\Common\Util\Debug::export($variable, $depth),1)); Es bastante engorroso escribir todo el tiempo, pero puede crear fácilmente una macro para ello.
Andrea Sprega
¡Esta función es muy útil! También me salvó de los bloqueos del navegador.
Ren
20

bien formateado:

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

Ejemplo sencillo y sencillo.

var_dump(serialize($Object));
Kentaro Ohkouchi
fuente
4

El problema es que en una relación bidireccional ambas entidades tienen un enlace entre sí, por lo que mientras se muestra entity1, var_dump también tendrá que imprimir todas las propiedades de entity2, que incluyen entity1 en sí, lo que le da un bucle.

Rad80
fuente
Esta es la única respuesta que explica el POR QUÉ sucede.
user2342558
4

Symfony <2.6

Puede usarlo \Doctrine\Common\Util\Debug::dump($variable, $depth);muestra la salida de la doctrina sin la información del proxy.

Symfony> 2.6

Si está utilizando Symfony 2.6 o más, le recomiendo encarecidamente que utilice dump(). Muestra una salida bien formateada y coloreada, y puede expandir / ocultar filas dinámicamente. ingrese la descripción de la imagen aquí

ir
fuente
2

El get_object_vars () también mejora la visualización.

echo "<pre>";
\Doctrine\Common\Util\Debug::dump(get_object_vars($user));
Wellington Lorindo
fuente
2

Con Symfony 2.6 ahora puede usar dump ($ var) en su 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();
J-quien
fuente
2

use dump ($ user) y podrá ver un resultado perfecto en Symfony Profiler. buena suerte

Vitaly Pugach
fuente
1

Simplemente use echo serialize ($ user);

AlexM
fuente