Alle PHP-Variablen auflisten

Lesezeit: 2 Minuten

Benutzer-Avatar
Salmann A

Ist es möglich, alle globalen Variablen in einem PHP-Skript auszugeben? Sagen Sie, das ist mein Code:

<?php
$foo = 1;
$bar = "2";
include("blah.php");
dumpall();
// displays $foo, $bar and all variables created by blah.php

Außerdem ist es möglich, alle definierten Konstanten in einem PHP-Skript abzulegen.

Verwenden get_defined_vars und/oder get_defined_constants

$arr = get_defined_vars();
print_r($arr);

  • und get_defined_constants für Konstanten

    – Lange Ohren

    24. Februar 2011 um 8:13 Uhr

  • $nico: Funktioniert das auch für intern erstellte Variablen eval()?

    – Salmann A

    24. Februar 2011 um 8:24 Uhr


  • @Salman Solange get_defined_vars()/get_defined_constants() heißt nach dem eval()dann ja.

    – Lienauer

    24. Februar 2011 um 9:06 Uhr

  • Nur für diejenigen, die kopieren/einfügen und dies in einer Zeile wollen echo "<pre>"; print_r(get_defined_vars()); die; Kopieren Sie, was Sie wollen.

    – JaseC

    17. September 2014 um 22:40 Uhr


Benutzer-Avatar
John

Beim Debuggen versuchen Sie, Unterschiede mit einem Programm wie z WinMerge (Freeware), um zu sehen, welche Unterschiede verschiedene Arrays und Variablen haben, die Sie haben möchten ksort() Andernfalls erhalten Sie viele falsche Negative. Es hilft auch, mit HTML visuell zu formatieren pre Element…

<?php
$everything = get_defined_vars();
ksort($everything);

?>

Bearbeiten: musste darauf zurückkommen und erkannte, dass ich eine bessere Antwort hatte, $GLOBALS.

$a = print_r(var_dump($GLOBALS),1);
echo '<pre>';
echo htmlspecialchars($a);
echo '</pre>';

Edit 2: wie mpag erwähnt print_r() kann anfällig für Speichermangel sein, wenn die Software, mit der Sie arbeiten, viel verwendet. Angenommen, es gibt keine Ausgabe oder es ist eindeutig abgeschnitten und Sie haben Zugriff auf die php.ini Datei können Sie die Speichernutzung wie folgt anpassen:

ini_set('memory_limit', '1024M');

  • Diese Antwort ist Gold für mich.

    – Quantum

    12. November 2015 um 16:28 Uhr

  • drei Kommentare: 1) print_r läuft bei Verwendung eines klassenlastigen CMS nicht genügend Arbeitsspeicher, aber json_encode($GLOBALS) mit console.logJavascript funktioniert. 2) Vergessen Sie nicht die $_ Variablen (SERVER, SESSION, ENV, FILES, COOKIE, GET, POST, REQUEST). 3) Für tiefergehendes Debugging mache ich auch a get_declared_classes und durch diese zu iterieren get_class_vars und get_class_methods

    – mpag

    14. Juni 2018 um 17:48 Uhr

  • @mpag Ah ja, ich habe gesehen, dass einige Software lächerliche Mengen an Speicher verwendet. Anscheinend besteht die Abhilfe dafür darin, ein solches System offensichtlich entweder nicht zu verwenden, aber viele Leute haben diese Option nicht, also wird stackoverflow.com/a/16423653/606371 hoffentlich für sie funktionieren. Auch wenn ich mich recht erinnere das $_ Variablen sollten gezogen werden $GLOBALS. Danke für deinen Kommentar, ich schaue mir das an get_declared_classes und get_class_vars demnächst. 🙂

    – John

    14. Juni 2018 um 19:29 Uhr

  • Ich setze mein Limit bereits auf 512 Millionen, und ich glaube, es ist unwahrscheinlich, dass eine Verdoppelung auf 1024 dieses Problem in meinem Fall lösen wird. Ich glaube, 2048M ist die harte Grenze für PHP.

    – mpag

    14. Juni 2018 um 21:04 Uhr

1335250cookie-checkAlle PHP-Variablen auflisten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy