我可以检查是否有子类并获取它们的名称吗?


Can I check if there are subclasses and get their name?

我想检查我的类是否有子类并获取它们的名称。可能吗?我怎样才能做到这一点?

必须加载子类才能正常工作。首先,使用 get_declared_classes() 获取 PHP 知道的类数组。

然后,遍历该数组,并对每个数组使用 is_subclass_of,以测试它是否是要测试的父类的子类。

如果您的子类不一定加载,您可以使用glob()扫描文件夹中的某种模式,例如 "lib/*php",并使用 require_once() 加载找到的文件。

此函数将给出类中的所有子类。

function getSubclassesOf($parent) { 
     $result = array(); 
     foreach (get_declared_classes() as $class) { 
           if (is_subclass_of($class, $parent)) $result[] = $class; 
     }
     return $result; 
}