get_included_files()
proporciona una pila de los archivos incluidos, en el orden en que están incluidos, que en mi caso me dio todo lo que necesitaba.
En concreto, si se llama a get_included_files()
dentro de un archivo que se ha incluido, propio archivo de la ruta de ese archivo será la más reciente entrada en la pila devuelto por get_included_files()
, la que incluyó que está por encima de eso, etc.
La advertencia es que los archivos solo se enumeran una vez, por lo que si el mismo archivo se incluye más de una vez, solo se mostrará la primera inclusión en la pila. Para mis propósitos eso no fue un problema, pero definitivamente significa que esto no funcionará en todos los casos.
Ejemplo específico: imagine que el archivo 'test1.php' incluye 'test_include.php'. El resultado de get_included_files() desde la perspectiva de 'test_include.php' después de cargar test1.php en el navegador es el siguiente (dado que, como puede ver, tengo un archivo auto_prepair, que a su vez carga un autocargador) .
array(4) {
[0]=>
string(21) "/www/auto_prepend.php"
[1]=>
string(19) "/www/autoloader.php"
[2]=>
string(14) "/www/test1.php"
[3]=>
string(21) "/www/test_include.php"
}
Así test_include.php sólo hay que hacer un poco de array_pop'ing de averiguar quién lo incluyó.
Si necesita esta función, es probable que tenga algunos problemas de diseño. Estoy seguro de que con una mejor organización de su código, esta función nunca será necesaria. – vbence
Buena solución, funciona perfecto para mí. – Black
vbence nunca tuvo que modificar el código desordenado y laberíntico de otra persona, obviamente ... sucederá algún día: D ¡muchas gracias por la solución! – Kaddath