Lösen Sie einen Dateinamen aus einer anderen Datei
-
03-07-2019 - |
Frage
Ich kann derzeit auf die folgende:
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__;
}
}
Ich möchte etwas ähnliches mit den Dateinamen tun (__FILE__
, aber dynamisch ausgewertet); Ich möchte wissen, was die Unterklasse-Datei befindet sich in, von der Superklasse. Ist es möglich, in irgendeiner Art und Weise elegant?
Ich weiß, dass Sie etwas tun könnten mit get_included_files()
, aber das ist nicht sehr effizient, vor allem, wenn ich zahlreiche Beispiele.
Lösung
Sie können Reflexion verwendet werden.
$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared
Andere Tipps
Uh, nicht wirklich, dass ich mir vorstellen kann. Jede Unterklasse müßte ein explizit implementiertes Verfahren haben, das __FILE__
zurückgegeben, die vollständig besiegt den Punkt der Vererbung an erster Stelle.
Ich bin auch wirklich neugierig, warum so etwas wie dies nützlich wäre.