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?


¿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.


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>';


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.


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í


2

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

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

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();

2

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


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.