假设我有这样的课程:
<?
class ObjectModel {
}
我还有其他一些课程,例如:
<?
class SomeNewClass extends ObjectModel {
}
class SomeOtherNewClass extends ObjectModel {
}
有没有办法基于 ObjectModel 类来获取孩子(SomeNewClass 和 SomeOtherNewClass)?
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
您可以迭代所有由反射返回的类get_declared_classes()
并检查它们的反射(Reflection::isSubclassOf
)
但是 - 当您使用自动加载时,这将不起作用。
不确定这是否会被否决,但您可以通过以下方式破解:
get_declared_classes
get_parent_class
对于每节课 1这并不漂亮,但如果加载了子类,这是可能的。