获取PHP类的所有子类

时间:2013-10-08 23:29:30

标签: php inheritance reflection

我希望找到扩展MyParentClass的所有类,因此我可以对它们运行特定的静态函数。

我知道php有一个函数get_declared_classes然后我可以使用instanceofReflection::isSubclassOf()但是我的项目有太多的类可以合理地使用它。

我的下一个选项是确保所有相应的类都在特定文件夹中,然后使用Relection

进行双重检查

我还有其他办法吗?

2 个答案:

答案 0 :(得分:2)

您想知道整个代码库的哪些类扩展了某个主类。如果不搜索所有文件的类定义,则无法知道,然后检查所有找到的类是否扩展主类(或扩展扩展主类的类...)。 get_declared_classes()对你没用,因为这个函数只会列出在代码执行过程中使用的类,然后再调用这个函数。它不会列出文件中定义但尚未(自动)加载的任何类。

我想知道你在做什么。你说你想对它们应用静态函数 - 这究竟是什么?我感觉到X-Y-problem的另一个例子,也就是因为你认为搜索所有扩展类会解决你问的问题,但你应该问一下让你这么想的问题。

答案 1 :(得分:0)

我同意@Sven的答案。

除了它可能是X-Y问题之外 - 我想到了另一个解决方案:

您可以创建和维护班级地图。

$classes = array(
 'ClassA',
 'ClassB',
 // '...' 
);