一尘不染

查找定义了类的PHP文件(在运行时)

php

PHP中是否有任何反射/自省/魔术,可以让您找到定义了特定类(或函数)的PHP文件?

换句话说,我有一个PHP类或实例化对象的名称。我想将此传递给 某个东西 (函数,Reflection类等),该东西将返回定义该类的文件系统路径。

/path/to/class/definition.php

我意识到我可以使用(get_included_files())获取到目前为止已包含的所有文件的列表,然后手动解析它们,但是一次尝试就需要大量文件系统访问。

我还意识到我可以在__autoload机制中编写一些其他代码,以将该信息缓存到某个地方。但是,在我所考虑的情况下,修改现有的__autoload是不可行的。

听到可以做到这一点的扩展会很有趣,但我最终希望可以在“常规”安装中运行的扩展。


阅读 231

收藏
2020-05-29

共1个答案

一尘不染

尝试 ReflectionClass

例:

class Foo {}
$reflector = new \ReflectionClass('Foo');
echo $reflector->getFileName();

false当找不到文件名时,例如在本机类上,将返回此值。

2020-05-29