【问题标题】:Swagger PHP and Doctrine Annotation issueSwagger PHP 和 Doctrine Annotation 问题
【发布时间】:2014-02-06 17:14:10
【问题描述】:

我正在为我们构建的 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 添加到 “包”的 class 文档注释。如果确实没有注释, 那么您需要将 @IgnoreAnnotation("package") 添加到 class 文档中 @Swagger\Annotations\Api 类的注释。

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

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

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

但这不是解决方案。

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

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

【问题讨论】:

    标签: php doctrine-orm swagger swagger-php


    【解决方案1】:

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

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

    我已报告该问题并修复了该问题but sadly the patch was rejected
    将问题(再次)报告给教义,抱怨的人越多,解决的越快?

    作为一种解决方法,将您的 DocParser.php 替换为 this version

    【讨论】:

    • 两年后,与这个答案中链接的这个分叉相比,原始类已经进化了一点。使用他的叉子时要小心。
    • 我太乐观了,期待我的1 line change 被合并。我已经更新了 fork 并重新应用了补丁。
    猜你喜欢
    • 2012-05-22
    • 2012-08-22
    • 2016-04-29
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    相关资源
    最近更新 更多