获取PHP中的所有扩展类

时间:2013-05-21 21:46:49

标签: php class children

说我得到了一个类:

<?
class ObjectModel {
}

我得到了一些其他课程:

<?
class SomeNewClass extends ObjectModel {
}

class SomeOtherNewClass extends ObjectModel {
}

有没有办法根据ObjectModel类获取子项(SomeNewClass&amp; SomeOtherNewClass)?

3 个答案:

答案 0 :(得分:12)

class ObjectModel {
}

class SomeNewClass extends ObjectModel {
}

class SomeOtherNewClass extends ObjectModel {
}

class SomeOtherNewClassLol extends ObjectModel {
}

function get_extends_number($base){
    $rt=0;
  foreach(get_declared_classes() as $class)
        if(is_subclass_of($class,$base)) $rt++;
        return $rt;
}

echo get_extends_number('ObjectModel'); //output: 3

是的,你可以做到,DEMO

答案 1 :(得分:4)

您可以迭代get_declared_classes()返回的所有类并检查其反射(Reflection::isSubclassOf

但是 - 当您使用自动加载时,这将不起作用。

答案 2 :(得分:2)

不确定这是否会被投票,但你可以破解:

  1. get_declared_classes
  2. get_parent_class为每个班级1
  3. 它不漂亮,但是如果加载了子类,则可能。