我正在寻找所有扩展MyParentClass的类,这样我就可以在它们上运行特定的静态函数。
我知道 php 有一个函数get_declared_classes然后我可以使用 instanceof
或Reflection::isSubclassOf()
但我的项目有太多的类,无法合理使用。
我的下一个选择是确保所有适当的类都位于特定文件夹中,然后与Relection仔细检查
还有其他方法可以做到这一点吗?
你想知道整个代码库的哪些类扩展了某个主类。如果不在所有文件中搜索类定义,然后检查所有找到的类是否扩展主类(或扩展扩展主类的类...... get_declared_classes()
不会帮助您,因为此函数只会列出在调用此函数之前在代码执行期间使用的类。它不会列出文件中定义但尚未(自动)加载的任何类。
我想知道你在做什么。你说你想对它们应用静态函数——这到底是什么?我感觉到 X-Y 问题的另一个实例,即因为你认为搜索所有扩展类会解决你的问题,所以你问的是,但相反,你应该问的是让你这么认为的问题。
我同意@Sven答案。
除了它可能出现 X-Y 问题的事实 - 我想到了另一种解决方案:
您可以创建和维护类映射。
$classes = array(
'ClassA',
'ClassB',
// '...'
);