Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获取某个抽象类的声明子类,但不实例化它们_Php_Class_Reflection - Fatal编程技术网

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

Php 获取某个抽象类的声明子类,但不实例化它们,php,class,reflection,Php,Class,Reflection,目前我是这样做的: $classes = get_declared_classes(); $models = array(); foreach($classes as $class){ $class = new \ReflectionClass($class); if($class->isSubclassOf('\\App\\Model')) $models[] = $class; } 但正如您所看到的,我正在为每个类创建一个反射对象,以便找出哪一个是我的“model”

目前我是这样做的:

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

foreach($classes as $class){
  $class = new \ReflectionClass($class);
  if($class->isSubclassOf('\\App\\Model'))
    $models[] = $class;
}
但正如您所看到的,我正在为每个类创建一个反射对象,以便找出哪一个是我的“model”类的子类

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

使用这个

foreach($classes as $class){
  if($class->is_Subclass_Of($class, '\\App\\Model', true))
    $models[] = $class;
}
或者您也可以看到

试试看

is_subclass_of($class, '\\App\\Model', true); // or is_a()
如果收到通知/警告,请弹出最后一个参数。第三个表示第一个参数是字符串,不应直接拒绝(函数默认需要对象)


为我工作

你的意思是($class,\\App\\Model',true)<代码>警告:is_子类_of()正好需要2个参数,给定3个。。我知道这不是医生说的……我得到了PHP5.3。阅读手册。3个论点。旧版PHP的最后一个弹出窗口。我知道文档上说了什么。。。。。我正在
PHP5.3
上测试它。。只是说这是一个新的有趣的错误…弹出最后一个参数。第三个说第一个参数是字符串,不应直接拒绝。@Alex肯定是。跳过一个实例化:)
is_subclass_of($class, '\\App\\Model'); // or is_a()