Нет способа сделать это глобально в конструкторе b
из-за природы __FILE__
- он не ведет себя как функция, но является магической константой, которая обрабатывается (и заменяется ее фактическим значением). ) когда файл интерпретируется.
Вам придется делать это для каждого ребенка отдельно. Это работает в PHP 5:
class a1 extends b{ private $path = __FILE__;}
class a2 extends b{ private $path = __FILE__;}
class a3 extends b{ private $path = __FILE__;}
class a4 extends b{ private $path = __FILE__;}
class a5 extends b{ private $path = __FILE__;}
Единственный способ, которым я знаю, чтобы сделать это в родителе, это использовать debug_backtrace()
, и это не очень хорошая практика.