Swagger PHP и проблема с аннотацией Doctrine

Я реализую Swagger-PHP для API, который мы создали.

Вот краткий обзор:

Язык: 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 для «package». Если это действительно не аннотация, вам нужно добавить @IgnoreAnnotation("package") в комментарий документа class класса @Swagger\Annotations\Api.

Добавление @IgnoreAnnotation("package") на самом деле не помогает.

Я заметил, что ошибка исчезает, если я удалю @package отсюда:

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

Но это не решение.

Я предполагаю, что это в основном связано с доктриной, но я не могу понять это.

Спасибо за любые советы или идеи по этому вопросу.


person SebScoFr    schedule 06.02.2014    source источник


Ответы (1)


Поскольку у FuelPHP есть класс Package (в файле fuel/core/package.php), который не является @Annotation, DocParser генерирует это предупреждение.

Swagger-PHP использует параметр $docParser->setIgnoreNotImportedAnnotations(true), который должен предотвращать подобные предупреждения.

Я сообщил о проблеме и исправил проблему, но, к сожалению, исправление было отклонено
Сообщите о проблеме (снова) в доктрину, чем больше людей жалуются, тем быстрее она будет исправлена ​​????

В качестве обходного пути замените ваш DocParser.php на эта версия

person Bob Fanger    schedule 16.02.2014
comment
Два года спустя исходный класс немного изменился по сравнению с этой вилкой, указанной в этом ответе. Будьте осторожны при использовании его вилки. - person peedee; 14.06.2016
comment
Я был слишком оптимистичен, ожидая, что мое 1 изменение строки будет объединено. Я обновил форк и повторно применил патч. - person Bob Fanger; 17.06.2016