获取某个抽象类的声明子类,但不实例化它们

时间:2012-10-20 12:02:13

标签: php class reflection

目前我这样做:

$classes = get_declared_classes();
$models = array();

foreach($classes as $class){
  $class = new \ReflectionClass($class);
  if($class->isSubclassOf('\\App\\Model'))
    $models[] = $class;
}

但是正如你所看到我正在为每个班级创建一个反射对象,以便找出哪个是我的“模型”类的孩子。

有没有更快的方法来搜索我的子课程?

2 个答案:

答案 0 :(得分:1)

尝试

is_subclass_of($class, '\\App\\Model', true); // or is_a()

如果您收到通知/警告,请弹出最后一个参数。第三个参数说第一个参数是一个字符串,不应该直接拒绝(默认情况下函数需要对象)

is_subclass_of($class, '\\App\\Model'); // or is_a()

适合我!

答案 1 :(得分:0)

使用此

foreach($classes as $class){
  if($class->is_Subclass_Of($class, '\\App\\Model', true))
    $models[] = $class;
}

或者您可以看到is_subclass_of php.net