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.

¿Fue útil?

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
scroll top