Обновить

Комментарии 3

Не упомянул в статье о плагине: https://plugins.jetbrains.com/plugin/7320-php-annotations

В ближайшем его релизе появится поддержка алиаса для атрибутов symfony-openapi пакета

use Sunrise\Symfony\OpenApi\Annotation as OpenApi;

#[OpenApi\Operation]

Мелочь, но из таких мелочей и складывается нормальны DX…

Тоже на работе делал такую штуку, очень удобно. Я делал на базе OA, но там сложный запутанный код, лучше было вообще без него сделать. Пакет выложить руки не дошли. Хорошо, что у вас получилось.

Добро пожаловать в клуб свидетелей документации на основе кода, а не комментариев к коду :)

Сам когда-то на Хабр с похожей штукой залетел (https://habr.com/ru/articles/775056/). Только там вместо отдельной библиотеки делал небольшую надстройку над существующей.

Из других отличий, входящие параметры определяются не через атрибут + дто, а чистым дто, который заполняется через ValueResolver.

- #[MapQueryString] CompletionListQuery $query,
+ CompletionListQuery $query,

Да, за это у класса CompletionListQuery должен появиться какой-то признак, позволяющий понять, что его нужно заполнить (интерфейс, атрибут, наследование). Но имхо такой подход приятней глазу, а то эти атрибуты в типизации - как прыщи)

Второй момент, не обязательно нужен Symfony 8 с ее сахаром, чтобы возвращать из контроллера типизированный объект. Можно использовать обычный слушатель kernel.view. Но в целом идея такая же.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации