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 ?

dm03514
fuente
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 .

Michael Berkowski
fuente
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!

Chris Schmitz
fuente
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
raveren
fuente
12

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

echo "<pre>";
print_r($array);
echo "</pre>";
0x58
fuente
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
6

Pedido configuración var_dump de Xdebbug , en particular los valores de estos parámetros:

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
Capitán Insaneo
fuente
3

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

Nino Škopac
fuente