Как получить путь текущего класса от унаследованного метода?
У меня есть следующее:
<?php // file: /parentDir/class.php
class Parent {
protected function getDir() {
return dirname(__FILE__);
}
}
?>
и
<?php // file: /childDir/class.php
class Child extends Parent {
public function __construct() {
echo $this->getDir();
}
}
$tmp = new Child(); // output: '/parentDir'
?>
Константа __FILE__
всегда указывает на исходный файл файла, в котором она находится, независимо от наследования.
Я хотел бы получить имя пути для производного класса.
Есть ли элегантный способ сделать это?
Я мог бы сделать что-то вроде $this->getDir(__FILE__);
, но это означало бы, что я должен повторить себя довольнодовольно часто.Я ищу метод, который помещает всю логику в родительский класс, если это возможно.
Обновление:
Принято решение (по Palantir ):
<?php // file: /parentDir/class.php
class Parent {
protected function getDir() {
$reflector = new ReflectionClass(get_class($this));
return dirname($reflector->getFileName());
}
}
?>