webentwicklung-frage-antwort-db.com.de

Wie kann man xdebug var_dump erhalten, um das vollständige Objekt/Array anzuzeigen

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

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

Ohne xdebug zeigt es sich wie erwartet. Ich habe mir die Dokumentation angesehen, aber keine Lösung gefunden. Weiß jemand, wie ich das beheben kann, damit xdebug var_dump das full Objekt zeigt?

276
dm03514

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() gesetzt werden. Dies ist nützlich, wenn Sie die php.ini nicht ändern und den Webserver nicht neu starten möchten, sondern 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');

Xdebug-Einstellungen werden in der offiziellen Dokumentation erklärt .

531

Ich weiß, dass dies ein sehr alter Beitrag ist, aber ich dachte, das könnte noch hilfreich sein.

Wenn Sie mit dem Lesen des Json-Formats vertraut sind, können Sie var_dump durch Folgendes ersetzen:

return json_encode($myvar);

Ich habe dieses Problem verwendet, um bei der Problembehandlung eines Dienstes zu helfen, den ich erstellt habe und der einige tief verschachtelte Arrays enthält. Dadurch wird jede Ebene Ihres Arrays zurückgegeben, ohne etwas abzuschneiden oder Ihre php.ini-Datei zu ändern. 

Da die json_encoded-Daten eine Zeichenfolge sind, können Sie sie leicht 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!

32
Chris Schmitz

Oder Sie können eine Alternative verwenden:

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

Es funktioniert mit Nullpunkteinstellung und hat ohnehin viel mehr Funktionen als Vardump von Xdebug. Um das verschachtelte Limit mit Kint im laufenden Betrieb zu umgehen, verwenden Sie einfach 

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

Ich bin jetzt spät dran, aber es könnte von Nutzen sein:

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

Checkout Xdebbugs var_dump-Einstellungen , insbesondere die Werte dieser Einstellungen:

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

Ich würde gerne var_export($array) empfehlen - es werden keine Typen angezeigt, aber es generiert eine Syntax, die Sie in Ihrem Code verwenden können :)

0
Nino Škopac