Resolver un nombre de archivo de otro archivo
-
03-07-2019 - |
Pregunta
Actualmente puedo hacer lo siguiente:
class SubClass extends SuperClass {
function __construct() {
parent::__construct();
}
}
class SuperClass {
function __construct() {
// this echoes "I'm SubClass and I'm extending SuperClass"
echo 'I\'m '.get_class($this).' and I\'m extending '.__CLASS__;
}
}
Me gustaría hacer algo similar con los nombres de archivo ( __FILE__
, pero evaluado dinámicamente); Me gustaría saber en qué archivo reside la subclase, desde la superclase. ¿Es posible de alguna manera elegante?
Sé que puedes hacer algo con get_included_files ()
, pero eso no es muy eficiente, especialmente si tengo muchas instancias.
Solución
Puedes usar Reflection.
$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared
Otros consejos
Uh, no realmente, en lo que puedo pensar. Cada subclase tendría que tener un método implementado explícitamente que devolviera __FILE__
, que en primer lugar elimina el punto de herencia.
También tengo mucha curiosidad por saber por qué algo como esto sería útil.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow