Risolvi un nome file da un altro file
-
03-07-2019 - |
Domanda
Attualmente posso fare quanto segue:
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__;
}
}
Vorrei fare qualcosa di simile con i nomi dei file ( __FILE__
, ma valutato dinamicamente); Vorrei sapere in quale file risiede la sottoclasse, dalla superclasse. È possibile in qualche modo elegante?
So che potresti fare qualcosa con get_included_files ()
, ma non è molto efficiente, soprattutto se ho numerosi casi.
Soluzione
Puoi usare Reflection.
$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared
Altri suggerimenti
Uh, non proprio, a cui riesco a pensare. Ogni sottoclasse dovrebbe avere un metodo esplicitamente implementato che restituisca __FILE__
, che in primo luogo sconfigge completamente il punto di eredità.
Sono anche molto curioso di sapere perché qualcosa di simile sarebbe utile.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow