我有一个抽象类"Class".Subclass类扩展了Class.Class抽象类具有以下调用:
is_readable('some_file.ext')
Run Code Online (Sandbox Code Playgroud)
如何强制抽象类的子节点在它们所在的文件夹中查找文件,而不是父抽象类的文件夹,而不覆盖子节点中的方法?
即如果摘要是在
类/摘要/ Class.php
而且孩子在
班/儿童/ Subclass.php,
如何让Subclass.php在classes/children /而不是classes/abstracts中查找some_file.ext,而不在子类中明确定义它?
Bai*_*ker 12
您可以使用它ReflectionClass::getFileName()来检索定义子类的文件名.
// In Superclass
public function isReadableFileInClassDir($file='somefile.ext') {
$reflection = new ReflectionClass($this);
$directory = dirname($reflection->getFileName()) . PATH_SEPARATOR;
return is_readable($directory . $filename);
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为$this无论它在何处定义,都将始终引用实例化的类(而不是它的父级,即使$this在父级中找到它).