在 php 中获取父类的所有已定义类
在包含所有文件后,我需要确定哪些类扩展了父类,因此:
class foo{
}
class boo extends foo{
}
class bar extends foo{
}
我希望能够抓取一个这样的数组:
array('boo','bar');
在包含所有文件后,我需要确定哪些类扩展了父类,因此:
class foo{
}
class boo extends foo{
}
class bar extends foo{
}
我希望能够抓取一个这样的数组:
array('boo','bar');
采用Wrikken的答案并使用Scott BonAmi的建议进行更正,您将获得:
$children = array();
foreach( get_declared_classes() as $class ){
if( is_subclass_of( $class, 'foo' ) )
$children[] = $class;
}
和 的其他建议对此不起作用,因为它们都期望一个对象的实例,而不是类名。is_a()
instanceof
如果你需要它,它真的闻起来像是糟糕的代码,基类不应该知道这个。
但是,如果已包含定义(即,您不需要包含可能包含的类的新文件),则可以运行:
$children = array();
foreach(get_declared_classes() as $class){
if($class instanceof foo) $children[] = $class;
}