2

目前我正在这样做:

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

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

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

有没有更快的方法来搜索我的孩子班级?

4

2 回答 2

1

尝试

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

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

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

为我工作!

于 2012-10-20T12:10:42.673 回答
0

用这个

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

或者你可以看到is_subclass_of php.net

于 2012-10-20T12:06:23.320 回答