Оновлення молодшої версії (наприклад, з 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/*"
Дата оновлення перекладу 2025-02-24
Помилки залежностей
Якщо ви отримуєте помилку залежності, це може означати, що вам також необхідно оновити
інші бібліотеки, які є залежностями бібліотек Symfony. Щоб дозволити
це, передайте прапорець --with-all-dependencies
:
1
$ composer update "symfony/*" --with-all-dependencies
Це оновлює symfony/*
та всі пакети, від яких залежать ці пакети.
Використовуючи жорсткі обмеження версій у файлі composer.json
, ви можете контролювати,
до яких версій оновлюється кожна бібліотека.
Якщо і це не спрацює, ваш файл composer.json
може вказувати версію для
бібліотеки, яка не сумісна з новішими версіями Symfony. У такому разі,
оновлення бібліотеки до новішої версії в composer.json
може вирішити проблему.
Або, у вас можуть бути більш глибокі проблеми, коли різні бібліотеки залежать від конфліктуючих версій інших бібліотек. Перевірте свої повідомлення про помилки для налагодження.
Інша проблема, яка може виникнути, полягає у тому, що залежності проекту можуть бути встановлені на вашому локальному комп'ютері, але не на віддаленому сервері. Зазвичай це трапляється, коли версії PHP на кожній машині відрізняються. Вирішити цю проблему можна, додавши опцію конфігурації platform до вашого файлу `composer.json`, щоб визначити найвищу версію PHP, дозволену для залежностей (встановіть її у значення, рівне версії PHP сервера).
Дата оновлення перекладу 2025-01-17
Оновлення інших пакетів
Можливо, ви також захочете оновити решту ваших бібліотек. Якщо ви добре попрацювали з
з вашими обмеженнями версії у composer.json
, ви можете зробити це безпечно,
просто виконавши:
1
$ composer update
Warning
Будьте обережні, якщо у вашому файлі composer.json
є неспецифічні
обмеження версії (наприклад, devmaster
), це може призвести до оновлення
деяких не-Symfony бібліотек до нових версій, які містять порушення зворотної
сумісності.
2) Оновлення вашого коду для роботи з новою версією
В теорії, ви повинні вже закінчити! Однак, вам може знадобитися зробити декілька змін у вашому коді, щоб все запрацювало. На додаток, деякі функції, які ви використовуєте, можуть працювати, але тепер можуть бути застарілими. І хоча це нормально, якщо ви знатимете про ці застарівання, ви можете почати виправляти їх з часом.
Кожна версія Symfony постачається з файлом оновлення (UPGRADE) (наприклад, UPGRADE-5.4.md), доданим у каталог Symfony, який пояснює ці зміни. Якщо ви будете дотримуватись інструкцій в документі та відповідно оновите ваш код, у подальшому оновлення мають стати безпечними.
Tip
Rector - це сторонній проект, який автоматизує оновлення та рефакторинг PHP-проектів. Rector включає в себе деякі правила для автоматичного виправлення певних застарівань Symfony.
Ці документи також можна знайти у Сховищі Symfony.
Дата оновлення перекладу 2025-02-24
3) Оновлення рецептів
З часом - і особливо при оновленні до нової версії бібліотеки - може з'явитися оновлена
версія рецепту .
Ці оновлення зазвичай незначні - наприклад, нові коментарі у файлі конфігурації - але
бажано синхронізувати ваші файли з рецептами.
Symfony Flex надає кілька команд, які допоможуть оновити ваші рецепти. Переконайтеся, що ви зафіксували всі непов'язані зміни, над якими ви працюєте, перед початком роботи:
1.18
Команда recipes:update
була представлена в Symfony Flex 1.18.
1 2 3 4 5 6 7 8 9 10 11
# обрати застарілий рецепт для оновлення
$ composer recipes:update
# оновити конкретний рецепт
$ composer recipes:update symfony/framework-bundle
# побачити список всіх встановлених рецептів та які оновлення доступні
$ composer recipes
# побачити деталізовану інформацію про конкретні рецепти
$ composer recipes symfony/framework-bundle
Команда recipes:update
є розумною: вона дивиться на різницю між
рецептом, коли ви його встановили, і його останньою версією. Потім вона створює патч і
застосовує його до вашого додатку. Якщо виникають конфлікти, ви можете вирішити їх як
звичайний конфлікт у git
і зафіксувати його як звичайний.