Gibt es eine Möglichkeit herauszufinden, woher eine Funktion in PHP aufgerufen wurde? Beispiel:
function epic()
{
fail();
}
function fail()
{
//at this point, how do i know, that epic() has called this function?
}
php
function-calls
pol_b
quelle
quelle
debug_backtrace()
was für eine hervorragende Funktion. Ich werde diesen verwenden!Verwendung
debug_backtrace()
:quelle
debug_backtrace()
ist ein teurer Anruf. Gewöhnen Sie sich nicht an, damit Anrufketten zu bestimmen. Wenn Sie diese Funktionen "schützen" möchten, lesen Sie OOP und geschützte Methoden.Schnellste und einfachste Lösung, wie ich gefunden habe
Ich teste die Geschwindigkeit auf einem Lenovo Laptop: Intel Pentiom CPU N3530 2.16GHz, RAM 8GB
Ergebnisse:
quelle
Wenn Sie also immer noch WIRKLICH nicht wissen wie, dann ist hier die Lösung:
quelle
Verwenden Sie die Funktion debug_backtrace: http://php.net/manual/en/function.debug-backtrace.php
quelle
Versuchen Sie es mit dem folgenden Code.
quelle
Wenn Sie den genauen Ursprung des Aufrufs oben im Stapel verfolgen möchten, können Sie den folgenden Code verwenden:
Dadurch werden verkettete Funktionen ignoriert und nur die relevantesten Anrufinformationen abgerufen (relevant wird lose verwendet, da dies davon abhängt, was Sie erreichen möchten).
quelle
Hoffe es hilft jemandem. Wenn sich die eigentliche Funktion außerhalb von httpdocs befindet, kann sie nicht gefunden werden, da der Server so eingerichtet wird, dass sie dies nicht zulässt. Es wurde nur einen Ordner tief getestet, aber die rekursive Methodik sollte theoretisch funktionieren.
Dies ist wie Version 0.1, aber ich beabsichtige nicht, sie weiterzuentwickeln. Wenn jemand sie aktualisiert, können Sie sie gerne erneut veröffentlichen.
quelle
function ff() { grep "function $1" $(find ./ -name "*.php") }
und rufen Sie dannff fail
oder aufff epic
. siehe: github.com/MaerF0x0/VimSetup/blob/master/bashrc#L122