Holen Sie sich eine Liste aufgerufener Funktionen in PHP

7

In PHP gibt get_included_files() ein Array mit den Namen der enthaltenen Dateien zurück.

Gibt es in ähnlicher Weise eine Möglichkeit, ein Array mit den Namen aufgerufener Funktionen mit Parametern zu erhalten?

    
Pradip 07.10.2010, 12:25
quelle

7 Antworten

4

Ich habe versucht, das zu erreichen, was Sie wollen, und schließlich eine vernünftige Lösung gefunden.

Mache eine Klasse mit dem Namen Debug und schließe sie über jede Datei ein, in der du debuggen willst. Erstelle eine Funktion, die die in $calls gespeicherten Informationen schön ausdruckt.

%Vor%

Rufen Sie diese Funktion immer dann auf, wenn Sie eine Funktion in der ersten Zeile der Funktion body deklarieren: Debug::log($message(optional) )

    
Henze 10.10.2010, 08:52
quelle
9
  

Auf diese Weise gibt es eine Möglichkeit, ein Array mit den Namen der aufgerufenen Funktionen mit Parametern zu erhalten?

Nein.

Was Sie tun können, ist ein debug_backtrace() , das alle Funktionen anzeigt ruft (mit Parametern) auf, die zur Ausführung von der Zeile führen, von der aus Sie das Backtrace von (dem "Aufruf-Stack") ausführen, aber das ist anders als alle Funktionen, die im Skript aufgerufen wurden.

Was möchten Sie tun? Vielleicht gibt es einen anderen Ansatz.

    
Pekka 웃 07.10.2010 12:27
quelle
6

Ich suchte nach etwas ähnlichem und fand die Ablaufverfolgung von xdebug sehr nützlich.

Hier ist ein Beispiel, wie es aussehen könnte: Ссылка

    
SimonSimCity 21.06.2013 14:12
quelle
2

Nicht, dass ich es weiß.

Sie können jedoch debug_backtrace verwenden, um die aktuell aktive Funktions- / Methodenhierarchie zu erhalten.

    
John Parker 07.10.2010 12:30
quelle
1

Ich glaube nicht, dass es eine Möglichkeit gibt, das zu tun, was Sie wollen. Entschuldigung.

Am ehesten kann ich die Funktion function_exists() aufrufen, die Ihnen anzeigt, ob eine bestimmte Funktion geladen wurde.

Was genau wollen Sie hier erreichen? Ich kann keinen Anwendungsfall (außerhalb eines Bildschirmtyps php_info ()) sehen, der eine Liste verfügbarer Funktionen erfordern würde.

    
Spudley 07.10.2010 12:31
quelle
1

Sie müssen es als Erweiterung installieren, aber ein Profiler wie XHProf gibt Ihnen eine Aufschlüsselung, welche Funktionen aufgerufen werden und wie lange sie dauern, sowie ein Callgraph.

    
ide 10.10.2010 09:00
quelle
1

XHProf oder Webgrind / KCachegrind zeigt Ihnen die aufgerufenen Funktionen, aber nicht ihre Parameter.

Sie können auch get_defined_functions verwenden, wodurch Sie eine Liste aller definierten Funktionen erhalten. Aber es zeigt Ihnen nicht, welche Funktionen tatsächlich aufgerufen wurden und mit welchen Parametern.

Wenn Sie die Parameter wirklich kennen müssen, kenne ich keine anderen Tools als einen benutzerdefinierten Logger, wie ihn Henze in seiner Antwort bereitgestellt hat.

    
ximo 16.10.2011 13:31
quelle

Tags und Links