330 votes

Comment faire pour que xdebug var_dump affiche l'objet/le tableau complet ?

J'utilise xdebug (php_xdebug-2.1.2-5.3-vc9.dll) on WAMP . Lorsque j'utilise var_dump sur un objet ou une variable de grande taille, il n'affiche pas la variable complète.

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

Sans xdebug, il s'affiche comme il se doit. J'ai regardé la documentation mais je n'ai pas vu de solution. Quelqu'un sait-il comment je peux corriger cela pour que xdebug var_dump montre le complet objet ?

0 votes

Print_r imprimera le tableau complet avec toutes les valeurs imbriquées.

640voto

Michael Berkowski Points 137903

Ce sont des variables configurables dans le 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 

Bien sûr, ils peuvent aussi être définis au moment de l'exécution via ini_set() Cette fonction est utile si vous ne voulez pas modifier le php.ini et redémarrer votre serveur Web, mais que vous avez besoin d'inspecter rapidement quelque chose de plus profond.

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

Les paramètres de Xdebug sont expliqués dans la documentation officielle. .

0 votes

Si quelqu'un ne parvient pas à faire fonctionner correctement les modifications de son php.ini ou ne trouve pas le fichier ini, l'alternative est de modifier les paramètres à la volée, ce qui est indiqué ici stackoverflow.com/a/8331138/89211

20 votes

Je soutiens que l'a display_max_depth de 5 est no sain d'esprit si vous vous attendez à obtenir des informations de votre var_dump

2 votes

@BenHarold Que recommanderiez-vous comme cadre alors ?

41voto

Chris Schmitz Points 660

Je sais que c'est un très vieux post, mais je me suis dit que ça pouvait encore être utile.

Si vous êtes à l'aise avec la lecture du format json, vous pouvez remplacer votre var_dump par :

return json_encode($myvar);

Je l'ai utilisé pour aider à dépanner un service que j'ai construit et qui comporte des tableaux profondément imbriqués. Cette fonction renvoie tous les niveaux de votre tableau sans tronquer quoi que ce soit ni vous obliger à modifier votre fichier php.ini.

De plus, comme les données codées en json sont des chaînes de caractères, vous pouvez facilement les écrire dans le journal des erreurs.

error_log(json_encode($myvar));

Ce n'est probablement pas le meilleur choix pour toutes les situations, mais c'est un choix !

12 votes

J'adore cette réponse. Vous pouvez également obtenir une jolie sortie html avec quelque chose comme ceci : return '<pre>'.json_encode($myvar, JSON_PRETTY_PRINT).'</pre>' ;

7 votes

Gardez à l'esprit que toutes les variables peuvent ne pas être json_encodeable. Les objets qui n'implémentent pas l'interface jsonserializable retourneront simplement un tableau vide "{}".

2 votes

Il convient également de noter que json_encoding something ne vous montrera pas les types, il est donc plus difficile d'identifier si quelque chose correspond de manière appropriée.

16voto

0x58 Points 397

Je sais que c'est un peu tard, mais cela pourrait vous être utile :

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

14voto

Raveren Points 4772

Ou vous pouvez utiliser une alternative :

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

Il fonctionne sans aucune configuration et a beaucoup plus de fonctionnalités que le var_dump de Xdebug de toute façon. Pour contourner la limite de l'imbrication à la volée avec Kint, utilisez simplement

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

6voto

Mice on Venus Points 373

Checkout Paramètres var_dump de Xdebbug en particulier les valeurs de ces paramètres :

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X