0

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

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

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

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

4

2 回答 2

2

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

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

于 2013-10-09T00:07:17.870 回答
0

我同意@Sven 的回答。

除了它可能会出现 XY 问题之外 - 我想到了另一种解决方案:

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

$classes = array(
 'ClassA',
 'ClassB',
 // '...' 
);
于 2013-10-09T00:27:18.487 回答