我希望找到扩展MyParentClass的所有类,因此我可以对它们运行特定的静态函数。
我知道php有一个函数get_declared_classes然后我可以使用instanceof
或Reflection::isSubclassOf()
但是我的项目有太多的类可以合理地使用它。
我的下一个选项是确保所有相应的类都在特定文件夹中,然后使用Relection
进行双重检查我还有其他办法吗?
答案 0 :(得分:2)
您想知道整个代码库的哪些类扩展了某个主类。如果不搜索所有文件的类定义,则无法知道,然后检查所有找到的类是否扩展主类(或扩展扩展主类的类...)。 get_declared_classes()
对你没用,因为这个函数只会列出在代码执行过程中使用的类,然后再调用这个函数。它不会列出文件中定义但尚未(自动)加载的任何类。
我想知道你在做什么。你说你想对它们应用静态函数 - 这究竟是什么?我感觉到X-Y-problem的另一个例子,也就是因为你认为搜索所有扩展类会解决你问的问题,但你应该问一下让你这么想的问题。
答案 1 :(得分:0)
我同意@Sven的答案。
除了它可能是X-Y问题之外 - 我想到了另一个解决方案:
您可以创建和维护班级地图。
$classes = array(
'ClassA',
'ClassB',
// '...'
);