1

我正在为我们构建的 API 实现 Swagger-PHP。

这是一个简短的回顾:

语言:PHP5.3

框架:FuelPHP 1.5.3

环境:本地(使用 Nginx 服务)

现在我有一个定义如下的 API 方法:

/**
 * @SWG\Api(
 *   path="/site/list",
 *   description="Get sites list",
 *   @SWG\Operation(...,
 *      @SWG\Parameter(...),
 *      @SWG\ResponseMessage(...),
 *      @SWG\ResponseMessage(...)
 *   )
 * )
 */
public function action_run()
{
    //doing stuff
}

我现在尝试以下(从我的应用程序的其他地方)来生成 JSON:

$swagger = new Swagger\Swagger('my/root/dir');
$swagger->getResource('/site/list', array('output' => 'json'));

这里的第一行(在实例化我的 Swagger 类时)给我一个错误:

ErrorException [用户警告]:[语义错误]“包”类未使用@Annotation 进行注释。你确定这个类可以用作注释吗?如果是这样,那么您需要将@Annotation 添加到“包”的文档注释中。如果确实是没有注解,那么需要在@Swagger\Annotations\Api 类的类文档注释中添加@IgnoreAnnotation("package")。

添加@IgnoreAnnotation("package")实际上没有帮助。

我注意到如果我@package从这里删除,错误就会消失:

https://github.com/zircote/swagger-php/blob/master/library/Swagger/Annotations/Api.php#L28

但这不是解决方案。

我猜这主要与教义有关,但我似乎无法弄清楚。

感谢您提供有关此问题的任何提示或想法。

4

1 回答 1

1

因为FuelPHP 有一个Package 类(在fuel/core/package.php 中),它不是@Annotation,DocParser 会生成这个警告。

Swagger-PHP 使用 $docParser->setIgnoreNotImportedAnnotations(true) 设置,它应该可以防止出现这样的警告。

我已经报告了这个问题并修复了这个问题,但遗憾的是补丁被拒绝
了(再次)向教义报告这个问题,抱怨的人越多,它得到修复的速度就越快

作为一种解决方法,用这个版本替换你的 DocParser.php

于 2014-02-16T13:52:21.457 回答