说我得到了一个类:
<?
class ObjectModel {
}
我得到了一些其他课程:
<?
class SomeNewClass extends ObjectModel {
}
class SomeOtherNewClass extends ObjectModel {
}
有没有办法根据ObjectModel类获取子项(SomeNewClass&amp; SomeOtherNewClass)?
答案 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)
不确定这是否会被投票,但你可以破解:
get_declared_classes
get_parent_class
为每个班级1 它不漂亮,但是如果加载了子类,则可能。