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