Resolver um nome de arquivo de outro arquivo
-
03-07-2019 - |
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.
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