web-dev-qa-db-fra.com

Comment obtenir xdebug var_dump pour afficher l'objet/le tableau complet

J'utilise xdebug (php_xdebug-2.1.2-5.3-vc9.dll) sur WAMP . Lorsque j'utilise var_dump sur un objet volumineux ou une variable, la variable complète n'est pas affichée.

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

Sans xdebug, il apparaît comme il se doit. J'ai regardé la documentation mais je n'ai pas vu de solution. Est-ce que quelqu'un sait comment je peux résoudre ce problème afin que xdebug var_dump affiche l'objet full?

276
dm03514

Ce sont des variables configurables dans 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, ceux-ci peuvent également être définis au moment de l'exécution via ini_set(), ce qui est utile si vous ne souhaitez pas modifier php.ini et redémarrer votre serveur Web, mais que vous devez inspecter rapidement quelque chose de plus en profondeur.

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 .

531

Je sais que c'est un très vieux billet, mais j'ai pensé que cela pourrait toujours ê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'utilise pour résoudre un service que je suis en train de créer et qui contient des tableaux profondément imbriqués. Cela retournera tous les niveaux de votre tableau sans rien tronquer ni vous obliger à changer votre fichier php.ini. 

De plus, comme les données json_encoded sont une chaîne, cela signifie que vous pouvez les écrire facilement dans le journal des erreurs.

error_log(json_encode($myvar));

Ce n'est probablement pas le meilleur choix pour chaque situation, mais c'est un choix!

32
Chris Schmitz

Ou vous pouvez utiliser une alternative:

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

De toute façon, cela fonctionne avec zéro configuration et a beaucoup plus de fonctionnalités que var_dump de Xdebug. Pour contourner la limite imbriquée à la volée avec Kint, utilisez simplement 

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

Je suis en retard, mais cela pourrait être utile:

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

Checkout Les paramètres var_dump de Xdebbug , notamment les valeurs de ces paramètres:

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
5
Captain Insaneo

J'aimerais recommander var_export($array) - il n'affiche pas les types, mais il génère une syntaxe que vous pouvez utiliser dans votre code :)

0
Nino Škopac