Swagger PHP和Doctrine Annotation问题

时间:2014-02-06 17:14:11

标签: php doctrine-orm swagger swagger-php

我正在为我们构建的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 [用户警告]:[语义错误]该类   “package”未使用@Annotation注释。你确定这堂课吗?   可以用作注释吗?如果是这样,那么你需要添加@Annotation   “包”的 doc注释。如果它确实没有注释,   那么你需要将@IgnoreAnnotation(“package”)添加到 doc   课堂评论@Swagger \ Annotations \ Api。

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

如果我从此处删除@package,我发现错误消失了:

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

但这不是解决方案。

我猜这主要与学说有关,但我似乎无法弄明白。

感谢有关此事的任何提示或想法。

1 个答案:

答案 0 :(得分:1)

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

Swagger-PHP使用$ docParser-> setIgnoreNotImportedAnnotations(true)设置,这应该会阻止这些警告。

我已经报告了问题并解决了问题but sadly the patch was rejected 再次向学说报告问题,人们抱怨的越多,修复得越快

作为解决方法,将DocParser.php替换为this version