Pergunta

Posso atualmente com o seguinte:

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__;
  }
}

Gostaria de fazer algo semelhante com os nomes de arquivos (__FILE__, mas avaliou de forma dinâmica); Gostaria de saber o que o arquivo reside subclasse em, a partir da superclasse. É possível em qualquer maneira elegante?

Eu sei que você poderia fazer algo com get_included_files() , mas isso não é muito eficiente, especialmente se eu tiver inúmeros casos.

Foi útil?

Solução

Você pode usar Reflexão.

$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared

Outras dicas

Uh, não realmente, que eu possa pensar. Cada subclasse seria necessário ter um método explicitamente implementado que __FILE__, o que anula completamente o ponto de herança em primeiro lugar retornado.

Eu também estou muito curioso para saber por algo como isso seria útil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top