如何从继承的方法获取派生类的路径?
2022-08-30 11:24:36
如何从继承的方法获取当前类的路径?
我有以下几点:
<?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());
}
}
?>