是否有可能以某种方式获取在运行时评估的 PHP 文件的位置?我正在寻找类似于魔法常数的东西__DIR__
,但在运行时评估,作为后期绑定。类似的区别与self
and 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
and Heir
位于不同的目录中。请考虑到这一点。另外,定义getDir
一遍又一遍地在各种继承人类别中似乎没有和选项,这就是为什么我们有继承......
您可以在Parent类的getDir方法中添加以下代码
$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);
}
}
希望它会有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)