Cómo obtener xdebug var_dump para mostrar el objeto / matriz completo


310

Estoy usando xdebug (php_xdebug-2.1.2-5.3-vc9.dll) en WAMP . Cuando lo uso var_dumpen un objeto grande o variable, no muestra la variable completa.

array
'node' => 
  array
    'my_form' => 
      array
        'form' => 
          array
            ...

Sin xdebug se muestra como debería esperarse. Miré la documentación pero no vi una solución. ¿Alguien sabe cómo puedo solucionar esto para que xdebug var_dumpmuestre el objeto completo ?


print_r imprimirá la matriz completa con todos los valores anidados.
Rashmi Jain

Respuestas:


603

Estas son variables configurables en php.ini:

; with sane limits
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024 


; with no limits
; (maximum nesting is 1023)
xdebug.var_display_max_depth = -1 
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1 

Por supuesto, estos también se pueden configurar en tiempo de ejecución a través de ini_set(), útil si no desea modificar php.ini y reiniciar su servidor web pero necesita inspeccionar rápidamente algo más profundamente.

ini_set('xdebug.var_display_max_depth', '10');
ini_set('xdebug.var_display_max_children', '256');
ini_set('xdebug.var_display_max_data', '1024');

La configuración de Xdebug se explica en la documentación oficial .


19
Sostengo que el a display_max_depthde 5 no es sensato si realmente espera obtener alguna información de ustedvar_dump
Ben Harold

2
@BenHarold ¿Qué recomendarías entonces como configuración?
Anriëtte Myburgh

66
@ AnriëtteMyburgh Realmente depende de tu código. Las matrices no complejas o JSON pueden estar bien con 5 - 10 es probablemente más que adecuado, pero si desea examinar profundamente los objetos del marco de Symfony, puede estar mejor sin límites. Ninguna sugerencia es de talla única.
Michael Berkowski

3
He visitado esta respuesta más de diez veces en los últimos seis meses. Gracias Michael Berkowski, estoy siempre en deuda contigo.
Lincoln Bergeson

2
@LincolnBergeson También tengo que buscarlo todo el tiempo.
Michael Berkowski el

38

Sé que esta es una publicación súper antigua, pero pensé que aún podría ser útil.

Si se siente cómodo leyendo el formato json, puede reemplazar su var_dump con:

return json_encode($myvar);

He estado usando esto para ayudar a solucionar un servicio que he estado construyendo que tiene algunas matrices profundamente anidadas. Esto devolverá cada nivel de su matriz sin truncar nada ni requerir que cambie su archivo php.ini.

Además, debido a que los datos codificados en json son una cadena, significa que puede escribirlos fácilmente en el registro de errores

error_log(json_encode($myvar));

Probablemente no sea la mejor opción para cada situación, ¡pero es una opción!


12
Me encanta esta respuesta También puede tener una salida html bonita con algo como esto: return '<pre>' .json_encode ($ myvar, JSON_PRETTY_PRINT). '</pre>';
David

77
Tenga en cuenta que todas las variables pueden no ser json_encodeable. Los objetos que no implementan la interfaz jsonserializable simplemente devolverán una matriz vacía "{}"
Kristian Sandström

2
También vale la pena señalar que json_encoding algo no le mostrará los tipos, por lo que es más difícil identificar si algo coincide adecuadamente.
SEOF

13

O puede usar una alternativa:

https://github.com/kint-php/kint

Funciona con configuración cero y tiene muchas más características que var_dump de Xdebug de todos modos. Para evitar el límite anidado sobre la marcha con Kint, solo use

 +d( $variable ); // append `+` to the dump call

12

Sé que es tarde, pero podría ser útil:

echo "<pre>";
print_r($array);
echo "</pre>";

21
print_r()no es un reemplazo para var_dump.
AnrDaemon

Fantásticas respuestas. Gracias.
PHPst

@AnrDaemon en serio?
PHPst

var_dump ([false]); print_r ([falso]);
AnrDaemon

Sé que esto es tarde, pero - print_r () podría ser absolutamente un reemplazo para var_dump () dependiendo de lo que quieras. Casi nunca uso var_dump () porque a menudo quiero mostrar estructuras de matrices y IMO print_r () muestra eso mucho mejor que var_dump ().
bestprogrammerintheworld


3

Me gustaría recomendar var_export($array), no muestra tipos, pero genera una sintaxis que puede usar en su código :)

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.