Разрешить использование имени файла из другого файла

StackOverflow https://stackoverflow.com/questions/202273

  •  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__, что в первую очередь полностью сводит на нет суть наследования.

Мне также очень любопытно, почему что-то подобное могло бы быть полезным.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top