PHP __DIR__ оценил время выполнения (поздняя привязка)?

Возможно ли получить местоположение файла PHP, оцененного во время выполнения? Я ищу что-то похожее на магическую константу __DIR__ , но оценивается во время выполнения, как последнее связывание. Аналогичная разница с self и static :

 __DIR__ ~ self ??? ~ static 

Моя цель – определить метод в абстрактном классе, используя __DIR__ который будет оцениваться соответственно для каждого класса наследников. Пример:

 abstract class Parent { protected function getDir() { // return __DIR__; // does not work return <<I need this>>; // } } class Heir extends Parent { public function doSomething() { $heirDirectory = $this->getDir(); doStuff($heirDirectory); } } 

Очевидно, что эта проблема возникает только в том случае, если Parent и Heir находятся в разных каталогах. Пожалуйста, учтите это. Кроме того, определение getDir снова и снова в разных классах Heir, похоже, не является и вариантом, поэтому у нас есть наследование …

    Вы можете добавить следующий код в метод getDir класса Parent

     $reflector = new ReflectionClass(get_class($this)); $filename = $reflector->getFileName(); return dirname($filename); 

    Ваш родительский класс будет выглядеть следующим образом:

     abstract class Parent { protected function getDir() { $reflector = new ReflectionClass(get_class($this)); $filename = $reflector->getFileName(); return dirname($filename); } } 

    Надеюсь, это поможет.