350 Stimmen

Wie bringt man xdebug var_dump dazu, das gesamte Objekt/Array anzuzeigen?

Ich verwende xdebug (php_xdebug-2.1.2-5.3-vc9.dll) on WAMP . Wenn ich var_dump auf ein großes Objekt oder eine große Variable, wird nicht die gesamte Variable angezeigt.

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

Ohne xdebug wird es so angezeigt, wie es erwartet werden sollte. Ich habe in der Dokumentation nachgesehen, aber keine Lösung gefunden. Weiß jemand, wie ich das beheben kann, damit xdebug var_dump zeigt die vollständig Objekt?

691voto

Michael Berkowski Punkte 260923

Dies sind konfigurierbare Variablen in der 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 

Natürlich können diese auch zur Laufzeit über ini_set() Diese Funktion ist nützlich, wenn Sie die php.ini nicht ändern und Ihren Webserver nicht neu starten wollen, aber schnell etwas genauer untersuchen müssen.

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

Die Xdebug-Einstellungen werden in der offiziellen Dokumentation erläutert .

45voto

Chris Schmitz Punkte 18366

Ich weiß, dass dieser Beitrag schon sehr alt ist, aber ich dachte mir, dass er vielleicht noch hilfreich ist.

Wenn Sie mit dem Lesen von json-Format vertraut sind, können Sie Ihre var_dump mit ersetzen:

return json_encode($myvar);

Ich habe dies verwendet, um einen Dienst, den ich gebaut habe, der einige tief verschachtelte Arrays hat, zu beheben. Dies gibt jede Ebene Ihres Arrays zurück, ohne dass etwas abgeschnitten wird oder Sie Ihre php.ini-Datei ändern müssen.

Da es sich bei den json_encoded-Daten um eine Zeichenkette handelt, können Sie sie außerdem problemlos in das Fehlerprotokoll schreiben

error_log(json_encode($myvar));

Es ist wahrscheinlich nicht die beste Wahl für jede Situation, aber es ist eine Wahl!

16voto

0x58 Punkte 427

Ich weiß, es ist spät, aber es könnte von Nutzen sein:

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

15voto

raveren Punkte 16958

Oder Sie können eine Alternative verwenden:

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

Es funktioniert mit null Einstellungen und hat sowieso viel mehr Funktionen als Xdebugs var_dump. Um die verschachtelte Begrenzung mit Sage zu umgehen, verwenden Sie einfach

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

6voto

Captain Insaneo Punkte 470

Kasse Die var_dump-Einstellungen von Xdebbug , insbesondere die Werte dieser Einstellungen:

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X