获取一个类 PHP 的所有子类


Get all sub classes of a class PHP

我正在寻找所有扩展MyParentClass的类,这样我就可以在它们上运行特定的静态函数。

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

我的下一个选择是确保所有适当的类都位于特定文件夹中,然后与Relection仔细检查

还有其他方法可以做到这一点吗?

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

我想知道你在做什么。你说你想对它们应用静态函数——这到底是什么?我感觉到 X-Y 问题的另一个实例,即因为你认为搜索所有扩展类会解决你的问题,所以你问的是,但相反,你应该问的是让你这么认为的问题。

我同意@Sven答案。

除了它可能出现 X-Y 问题的事实 - 我想到了另一种解决方案:

您可以创建和维护类映射。

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