Документация Symfony говорит, что для включения аннотаций вы должны выполнить следующую команду.
$ composer require annotations
Что на самом деле происходит за кулисами с этой командой для включения аннотаций?
Меня это сбивает с толку, потому что обычно я бы использовал что-то вроде
composer require foo/baz
Чтобы установить пакет foo/baz — но annotations не является пакетом — или, по крайней мере, мне он не кажется таковым. Пакеты обычно имеют структуру namespace/packagename, а annotations представляет собой одно слово.
Кроме того, я изменил свой файл composer.json до и после запуска этой команды, а также только разные apepars, чтобы увеличить младшую версию на sensio/framework-extra-bundle (что даже не должно иметь значения, поскольку ^5.1 SemVer переводится в 5.latestst, верно? )
$ diff composer.json composer.json.orig
8c8
< "sensio/framework-extra-bundle": "^5.2",
---
> "sensio/framework-extra-bundle": "^5.1",
Так как же на самом деле работает этот composer require annotations и какие изменения он вносит, чтобы включить аннотации маршрутов?
Спасибо @VadimAshikhman - рад отметить это как принятый ответ, если это реальный ответ :)






«аннотации» здесь — это псевдоним для Рецепт Symfony.
Перейдите на сайт рецептов Symfony: https://flex.symfony.com/ и найдите «аннотации». Скорее всего, вы найдете два пакета, и тот, который вас интересует, — это второй: sensio/framework-extra-bundle
Когда вы запускаете composer require annotations, композитор устанавливает пакет (точно так же, как если бы вы делали composer require sensio/framework-extra-bundle, или обновляет его, если он у вас уже есть), и он также запускает связанный с ним рецепт (в зависимости от вашей версии, это здесь: https://github.com/symfony/recipes/tree/master/sensio/framework-extra-bundle)
Рецепт фактически копирует кучу файлов в ваш рабочий каталог, так что конфигурация выполняется автоматически, и вам не нужно беспокоиться. Некоторые рецепты добавляют новую консольную команду, добавляют файлы конфигурации или двоичный файл ... это довольно мощно.
Все эти изменения записываются в новый файл конфигурации относительноsymfony.lock, где вы можете найти запущенные рецепты с некоторой информацией.
NB : you should commit the
symfony.lockfile if you use a VCS
Он называется
Symfony Flex. Подробнее symfony.com/doc/current/setup/flex.html#how-does-flex-work и рецепт дляannotationsможно найти здесь github.com/symfony/recipes/blob/master/sensio/…