PHP: Wie alle lokalen Variablen in einem Ausnahmebehandler ausgegeben werden

8

Ich bin auf der Suche nach einer Methode, mit der mein Exception-Handler die lokalen Variablen der Funktion, in der die Ausnahme ausgelöst wurde, ablegt. Ist das möglich?

    
Aoyama 03.01.2012, 13:02
quelle

6 Antworten

7

get_defined_vars() gibt ein Array aller definierten Variablen zurück. Sie können dann jede einzelne Schleife durchlaufen und den Inhalt ablegen oder var_dump( get_defined_vars() ) verwenden, um sie massenhaft auszugeben.

    
George Cummins 03.01.2012 13:04
quelle
2

Versuchen Sie var_dump( get_defined_vars( ) ); . Das sollte alle definierten Variablen im Bereich ablegen.

    
Wes Crow 03.01.2012 13:05
quelle
2

Ich denke, es ist besser, xDebug einzurichten.

Es wird automatisch die gesamte Umgebung ausgegeben.

Und du wirst jedes Mal etwas wie:

bekommen %Vor%

Es macht unglaublich einfach zu debuggen.

    
devdRew 03.01.2012 13:08
quelle
2

Der Ausnahmebehandler wird niemals Zugriff auf die lokalen Variablen der Funktion haben, die die Ausnahme ausgelöst hat, weil diese Variablen lokal sind. Ich glaube nicht, dass es einen Weg gibt, um aus PHP-Code von userland auf die Variablentabelle eines bestimmten Stack-Frames zuzugreifen.

Sie können dies tun, indem Sie xdebug als Schritt-Debugger verwenden. Mit Haltepunkten (z. B. im Ausnahmebehandler) können Sie in jeden Stapelrahmen schauen.

Neben dem Schritt-Debuggen gibt es auch einige Anzeigeoptionen, die Sie verwenden möchten, wie:

hakre 01.08.2012 09:27
quelle
2

Sie haben Zugriff auf lokale Variablen, wenn die Ausnahme im selben Bereich / derselben Funktion gefangen wird, in der sie ausgelöst wird:

%Vor%     
Techi 18.12.2012 11:12
quelle
0

Sie können alle definieren (einschließlich vordefiniert), indem Sie die Funktion get_defined_vars aufrufen.

Nur lokale Variablen (Bereich der aktuellen Funktion) ist nicht ohne einige Debugging-Tools verfügbar.

    
rkosegi 03.01.2012 13:07
quelle

Tags und Links