Обновление младшей версии (например, с 6.3.0 до 6.4.0)
Дата обновления перевода 2024-07-29
Обновление младшей версии (например, с 6.3.0 до 6.4.0)
Если вы обновляете младшую версию (где изменяется цифра посредине), то вы не должны столкнуться с существенными изменениями обратной совместимости. Чтобы узнать детали, смотрите обещание обратной совместримоти Symfony.
Однако, некоторые поломки обратной совместимости возможны и через секунду вы узнаете, как подготовиться к ним.
В обновлении младшей верси есть два шага:
- Обновление библиотеки Symfony через Composer ;
- Обновление вашего кода для работы с новой версией .
1) Обновление библиотеки Symfony через Composer
Файл composer.json
сконфигурирован так, чтобы позволить пакетам Symfony обновляться
до версий патчей. Но чтобы обновить пакет до новой младшей версии, вам вероятно потребуется
обновить ограничение версии рядом с каждой библиотекой, начинающейся с symfony/
.
Предположим, что вы переходите с Symfony 6.3 на 6.4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
{
"...": "...",
"require": {
- "symfony/config": "6.3.*",
+ "symfony/config": "6.4.*",
- "symfony/console": "6.3.*",
+ "symfony/console": "6.4.*",
"...": "...",
"...": "Несколько библиотек, начинающихся с
symfony/, следуют своей собственной схеме версионирования. Вам
не нужно обновлять эти версии: вы можете
обновить их независимо, когда захотите",
"symfony/monolog-bundle": "^3.5",
},
"...": "...",
}
Ваш файл composer.json
должен также содержать блок extra
, который вам нужно будет
также обновить:
1 2 3 4 5 6 7
"extra": {
"symfony": {
"...": "...",
- "require": "6.3.*"
+ "require": "6.4.*"
}
}
Далее, используйте Composer для скачивание новых версий библиотек:
1
$ composer update "symfony/*"
Ошибки зависимостей
Если вы получите ошибку зависимости, она может просто означать, что вам нужно обновить и другие ваши зависимости. В этом случае, попробуйте следующую команду:
1
$ composer update symfony/symfony --with-dependencies
Это обновляет symfony/symfony
и все пакеты, от которых он завсит, которые
будут включать всебя несколько других пакетов. Используя облегчённую версию
ограничений в composer.json
, вы можете контролировать, до каких версий будет
обновлена каждая из ваших библиотек.
Если и это не сработает, ваш файл composer.json
может указывать версию для
билиотеки, котора не совместима с более новыми версиями Symfony. В таком случае,
обновление библиотеки до более новой версии в composer.json
может решить проблему.
Или, у вас могут быть более глубокие проблемы, когда разные библиотеки зависят от конфликтующих версий других библиотек. Проверьте ваши сообщения ошибок для отладки.
Обновление других пакетов
Вы можете также захотеть обновить и остальные ваши библиотеки. Если вы хорошо
справились с вашими version constraints в composer.json
, вы можете без
опаски сделать это, выполнив:
1
$ composer update
Caution
Будьте осторожны, если у вас есь какие-то общие ограничения версий
в вашем composer.json
(например, dev-master
), это может обновить
некоторые библиотеки не из Symfony до более новых версий, которые содержат
существенные изменения обратной совместимости.
2) Обновление вашего кода для работы с новой версией
В теории, вы должны уже закончить! Однако, вам может понадобиться сделать несколько изменений в вашем коде, чтобы всё заработало. В дополнение, некоторые функции, которые вы используете, могут работать, но теперь могут осуждаться. И хотя это нормально, если вы будете знать об этих осуждениях, вы можете начать исправлять их со временем.
Каждая версия Symfony поставляется с файлом обновленя (UPGRADE) (например, UPGRADE-6.4.md), включённым в каталог Symfony, который обоъясняет эти изменения. Если вы будете следоваь инструкциям в документа и соответственно обновите ваш код, в будущем обновления должны стать безопасными.
Tip
Rector - это сторонний проект, который автоматизирует обновление и рефакторинг проектов PHP. Rector включает в себя некоторые правила для исправления определенных устареваний Symfony автоматически.
Эти документы также можно найти в Хранилище Symfony.
3) Updating Recipes
Over time - and especially when you upgrade to a new version of a library - an updated version of the recipe may be available. These updates are usually minor - e.g. new comments in a configuration file - but it's a good idea to keep your files in sync with the recipes.
Symfony Flex provides several commands to help upgrade your recipes. Be sure to commit any unrelated changes you're working on before starting:
1.18
The recipes:update
command was introduced in Symfony Flex 1.18.
1 2 3 4 5 6 7 8 9 10 11
# choose an outdated recipe to update
$ composer recipes:update
# update a specific recipe
$ composer recipes:update symfony/framework-bundle
# see a list of all installed recipes and which have updates available
$ composer recipes
# see detailed information about a specific recipes
$ composer recipes symfony/framework-bundle
The recipes:update
command is smart: it looks at the difference between the
recipe when you installed it and the latest version. It then creates a patch and
applies it to your app. If there are any conflicts, you can resolve them like a
normal git
conflict and commit like normal.