Оновлення молодшої версії (наприклад, з 5.0.0 до 5.1.0)
Дата оновлення перекладу 2024-06-07
Оновлення молодшої версії (наприклад, з 5.0.0 до 5.1.0)
Якщо ви оновлюєте молодшу версію (де змінюється цифра посередині), то ви не повинні зіштовхнутися з суттєвими змінами зворотної сумісності. Щоб дізнатися деталі, дивіться обіцянку зворотної сумісності Symfony.
Однак, деякі поломки зворотної сумісності можливі, і за секунду ви дізнаєтеся, як підготуватися до них.
В оновленні молодшої версії є два кроки:
- Оновлення бібліотеки Symfony через Composer ;
- Оновлення вашого коду для роботи з новою версією .
1) Оновлення бібліотеки Symfony через Composer
Файл composer.json
сконфігуровано так, щоб дозволяти пакетам Symfony оновлюватися,
щоб оновлювати патчі. Але для того, щоб оновити молодшу версію, вам скоріш за все буде
потрібно оновити обмеження версії поруч з кожною бібліотекою, що розпочинається з
symfony/
. Уявіть, що ви оновлюєтеся з 5.3 до 5.4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
{
"...": "...",
"require": {
- "symfony/cache": "5.3.*",
+ "symfony/cache": "5.4.*",
- "symfony/config": "5.3.*",
+ "symfony/config": "5.4.*",
- "symfony/console": "5.3.*",
+ "symfony/console": "5.4.*",
"...": "...",
"...": "Декілька бібліотек, що розпочинаються з
symfony/ дотримуються власної схеми версіонування. Вам
не потрібно оновлювати ці версії: ви можете оновити їх
незалежно коли вам захочеться",
"symfony/monolog-bundle": "^3.5",
},
"...": "...",
}
Ваш файл composer.json
також повинен мати блок extra
, який вам також
потрібно буде оновити:
1 2 3 4 5 6 7
"extra": {
"symfony": {
"...": "...",
- "require": "5.3.*"
+ "require": "5.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-5.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.