FastAdmin 文档生成报 ReflectionException

1
2
3
4
$ php think api --force=true

[ReflectionException]
Class app\api\controller\hongfs\ does not exist

这个报错很明显的,是反射异常,通过对 api 命令的追踪,代码的流程大概是:

1
2
3
4
5
application/admin/command/Api.php->execute
application/admin/command/Api/library/Builder.php->render
application/admin/command/Api/library/Builder.php->parse
application/admin/command/Api/library/Builder.php->extractAnnotations
application/admin/command/Api/library/Extractor.php->getClassAnnotations

最先使用反射的是 getClassAnnotations,然后把传进来的值输出到日志看一下。看到的内容其实和报错一样的,不是一个正常类,所以我们在进入前把它排除掉就可以了。

application/admin/command/Api.php:111

1
2
3
4
5
6
7
8
9
10
11
12
13
$classes = array_unique(array_filter($classes));

// 替换成
$classes = array_filter($classes, function ($value) {
if (!$value) {
return false;
}

// 筛选掉结尾是 `//` 结束(四个是因为转义)
return preg_match_all('/(.*)\\\\$/', $value) === 0;
});

$classes = array_unique($classes);
往上