ver off navegador log errors errores error display_errors configurar activar php reflection class

off - ver errores php en navegador



Encontrar el archivo PHP(en tiempo de ejecuciĆ³n) donde se definiĆ³ una clase (3)

Para ReflectionClass en un archivo de espacio de nombres , agregue un prefijo "/" para que sea global de la siguiente manera:

$ reflector = new / ReflectionClass (''FOO'');

O bien, generará un error, dijo ReflectionClass en un espacio de nombres no definido. No tenía derecho a hacer comentarios para la respuesta anterior, por lo que escribo esto como una respuesta suplementaria.

¿Hay alguna reflexión / introspección / magia en PHP que te permita encontrar el archivo PHP donde se definió una clase (o función) en particular?

En otras palabras, tengo el nombre de una clase de PHP o un objeto instanciado. Quiero pasar esto a algo (función, clase Reflection, etc.) que devolvería la ruta del sistema de archivos donde se definió la clase.

/path/to/class/definition.php

Me doy cuenta de que podría usar ( get_included_files()) para obtener una lista de todos los archivos que se han incluido hasta el momento y luego analizarlos todos manualmente, pero eso es mucho acceso al sistema de archivos para un solo intento.

También me doy cuenta de que podría escribir un código adicional en nuestro mecanismo __autoload que almacena esta información en alguna parte. Sin embargo, modificar la __autoload existente está fuera de los límites en la situación que tengo en mente.

Escuchar sobre extensiones que pueden hacer esto sería interesante, pero en última instancia me gustaría algo que pueda ejecutarse en una instalación "estándar".


Tratar

Ejemplo:

class Foo {} $reflector = new ReflectionClass(''Foo''); echo $reflector->getFileName();

Esto devolverá false cuando no se puede encontrar el nombre de archivo, por ejemplo, en clases nativas.


si tuviera una carpeta incluye, podría ejecutar un comando de script de shell para "grep" para "clase $ className" haciendo: $filename = ``grep -r "class $className" $includesFolder/*/ y devolvería lo que archivo en el que estaba. Aparte de eso, no creo que haya ninguna función mágica para que PHP lo haga por ti.