¿Hay alguna manera de averiguar desde dónde se llamó a una función en PHP? ejemplo:
function epic()
{
fail();
}
function fail()
{
//at this point, how do i know, that epic() has called this function?
}
php
function-calls
pol_b
fuente
fuente
debug_backtrace()
una función excelente. ¡Usaré este!Utilizar
debug_backtrace()
:fuente
debug_backtrace()
es una llamada cara. No se acostumbre a usarlo para determinar cadenas de llamadas. Si desea "proteger" esas funciones, consulte OOP y métodos protegidos.La solución más rápida y sencilla que encontré
Pruebo la velocidad en la computadora portátil Lenovo: Intel Pentiom CPU N3530 2.16GHz, RAM 8GB
Resultados:
fuente
Entonces, si todavía REALMENTE no sabe cómo, aquí está la solución:
fuente
Utilice la función debug_backtrace: http://php.net/manual/en/function.debug-backtrace.php
fuente
Pruebe el siguiente código.
fuente
Si desea rastrear el origen exacto de la llamada en la parte superior de la pila, puede usar el siguiente código:
Esto ignorará las funciones encadenadas y obtendrá solo la información de llamada más relevante (relevante se usa libremente, ya que depende de lo que esté tratando de lograr).
fuente
Espero que ayude a alguien. Si la función real está fuera de httpdocs, entonces no se puede encontrar porque el servidor se configurará para no permitirla. Solo lo probé en una carpeta de profundidad también, pero la metodología recursiva debería funcionar en teoría.
Esto es como la versión 0.1, pero no tengo la intención de continuar con el desarrollo, así que si alguien lo actualiza, no dude en volver a publicarlo.
fuente
function ff() { grep "function $1" $(find ./ -name "*.php") }
luego llame aff fail
off epic
. ver: github.com/MaerF0x0/VimSetup/blob/master/bashrc#L122