Комментарии 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. Но в целом идея такая же.

OpenAPI без #[OA\...]: как я сделал генератор документации для Symfony