Разрешить использование имени файла из другого файла
-
03-07-2019 - |
Вопрос
В настоящее время я могу перейти к следующему:
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__;
}
}
Я хотел бы сделать что-то подобное с именами файлов (__FILE__
, но динамически оцениваемый);Я хотел бы знать, в каком файле находится подкласс из суперкласса.Возможно ли это каким-либо элегантным способом?
Я знаю, ты мог бы что-нибудь сделать с get_included_files()
, но это не очень эффективно, особенно если у меня есть многочисленные экземпляры.
Решение
Вы можете использовать Отражение.
$ref = new ReflectionObject($this);
$ref->getFileName(); // return the file where the object's class was declared
Другие советы
Э-э, не совсем, насколько я могу припомнить.Каждый подкласс должен был бы иметь явно реализованный метод, который возвращал бы __FILE__
, что в первую очередь полностью сводит на нет суть наследования.
Мне также очень любопытно, почему что-то подобное могло бы быть полезным.
Не связан с StackOverflow