在包含所有文件之后,我需要确定哪些类扩展了父类,因此:
class foo{
}
class boo extends foo{
}
class bar extends foo{
}
Run Code Online (Sandbox Code Playgroud)
我希望能够像以下一样获取数组:
array('boo','bar');
Run Code Online (Sandbox Code Playgroud)
Wri*_*ken 22
如果你需要它,它真的闻起来像坏代码,基类不应该知道这一点.
但是,如果已包含定义(即,您不需要包含可能具有类的新文件),则可以运行:
$children = array();
foreach(get_declared_classes() as $class){
if($class instanceof foo) $children[] = $class;
}
Run Code Online (Sandbox Code Playgroud)
Mik*_*kel 20
采用Wrikken的答案并使用Scott BonAmi的建议进行纠正,你会得到:
$children = array();
foreach( get_declared_classes() as $class ){
if( is_subclass_of( $class, 'foo' ) )
$children[] = $class;
}
Run Code Online (Sandbox Code Playgroud)
其他建议is_a()和instanceof不起作用,因为他们都期望一个对象的实例,而不是一个类名.
| 归档时间: |
|
| 查看次数: |
15004 次 |
| 最近记录: |