PHP 8.3: що змінюється для розробниці та як безпечно оновитися

У матеріалі розбирається підхід автора Ayesh Karunaratne до переходу на PHP 8.3 та ключові зміни релізу.

PHP 8.3 Released

Що саме принесло оновлення PHP 8.3

PHP 8.3 став черговим мажорним релізом за 2023 рік, але при цьому зберіг значну зворотну сумісність з гілкою 8.0-8.3. Автор наголошує, що більшість застосунків на PHP 8.0, 8.1 та 8.2 з великою ймовірністю запустяться без змін, проте розробникам варто звернути увагу на нові можливості та депрекейти.

Ключові напрямки змін, які виділяє автор:

  • Нові можливості для мови (типізація констант класів, динамічний доступ до констант тощо).
  • Допоміжні функції для роботи з JSON та покращення повсякденного коду.
  • «Quality-of-life» зміни в синтаксисі та стандартній бібліотеці.
  • Набір депрекейтів, які поки не ламають код, але сигналізують про майбутні зміни.

Нові можливості мови, на які варто звернути увагу

Автор детально описує кілька змін, що впливають на щоденне написання коду та дизайн API. У статті наведені посилання на окремі розбори кожної з можливостей, тому тут доцільно виділити практичні наслідки.

Типи для констант класів

Нововведення typed-constants додає можливість оголошувати константи класів з явним типом. Це робить поведінку констант більш передбачуваною і дозволяє інструментам статичного аналізу точніше працювати з кодом.

Практичний ефект для розробниці:

  • Можна задати тип для значень конфігурації, що живуть як константи в класах.
  • Легше відстежувати порушення інваріантів, коли константа очікується певного типу (наприклад, int або string).
  • При рефакторингу IDE та аналізатори можуть краще підказувати помилки.

Нова функція для перевірки JSON

Автор посилається на окремий розбір нової функції для роботи з JSON. У гілці 8.3 з'являється зручний спосіб перевіряти JSON без побічних ефектів, пов'язаних з повноцінним розбором і використанням глобальних помилок. Це зменшує кількість шаблонного коду для валідації зовнішніх даних.

У повсякденній роботі це корисно, коли:

  • ви приймаєте JSON із зовнішніх API або фронтенда;
  • важливо швидко перевірити валідність перед подальшою обробкою;
  • потрібно спростити обробку помилок і уникнути залежності від глобальних станів.

Динамічне отримання констант класу та членів enum

Зміни щодо dynamic class constant fetch полегшують доступ до констант і значень enum у динамічному коді. Це стосується сценаріїв, де ім'я класу або елемента enum стає відомим лише під час виконання, наприклад, у фреймворках, які будують конфігурацію з масивів або метаданих.

Практичні сценарії, які виграють від цього:

  • ORM та фреймворки налаштувань, що зберігають назви класів і констант у конфігураційних файлах.
  • Системи плагінів, де класи завантажуються динамічно.
  • Використання enum у CLI-інструментах або REST API, коли строкове значення потрібно зіставити з певним елементом enum.

Quality-of-life зміни та депрекейти

Окремий блок релізу, який автор називає quality-of-life improvements, включає невеликі, але відчутні у щоденній роботі покращення синтаксису та стандартної бібліотеки. Це не радикально змінює мову, але зменшує кількість «шумного» коду та полегшує читання.

Паралельно команда мови додала набір депрекейтів. Автор акцентує, що ці зміни поки не ламають існуючий код, але викликають попередження і готують до майбутніх видалень у наступних мажорних версіях.

Для практики це означає:

  • Після оновлення варто прогнати тестовий прогін із включеними E_DEPRECATED, зафіксувати всі попередження та поступово заміняти застарілі виклики.
  • Новий код бажано одразу писати без застарілих конструкцій, орієнтуючись на перелік з посилання вище.
  • Якщо бібліотека ще не оновлена під 8.3, розробниці застосунку корисно відстежувати її issue tracker на предмет сумісності з новою версією.

Як оновити PHP до 8.3 залежно від середовища

Після виходу стабільного релізу PHP 8.3.0 пакети стали доступні через звичні канали. Автор окремо розділяє сценарії встановлення для різних операційних систем.

macOS з Homebrew

Для користувачів macOS автор підготував окрему інструкцію як встановити або оновити PHP 8.3 через Homebrew. Вона фокусується на:

  • встановленні нової версії з tap'ів Homebrew;
  • перемиканні активної версії PHP у системі;
  • перевірці того, що CLI та веб-сервер використовують однакову версію інтерпретатора.

Fedora, RHEL, CentOS та сумісні дистрибутиви

Для екосистеми Red Hat автор описує окрему інструкцію для Fedora, RHEL, CentOS й інших сумісних систем. У цих дистрибутивах важливо враховувати наявні репозиторії та політику оновлень:

  • деякі системи постачають довгострокові гілки PHP і повільніше приймають нові мажорні версії;
  • часто використовуються додаткові репозиторії (наприклад, сторонні RPM-репозиторії), які надають новіші збірки;
  • потрібно уважно перевіряти залежності та модулі PHP, які надає конкретний репозиторій.

Ubuntu та Debian

Для середовищ на базі Debian автор наводить посилання як встановити або оновити PHP 8.3 на Ubuntu та Debian. Тут розробницям варто зважати на такі моменти:

  • стабільні гілки Debian/Ubuntu зазвичай відстають від останніх версій PHP, тому часто використовуються сторонні репозиторії або PPA;
  • необхідно узгодити версію PHP між CLI, FPM/Apache модулем і тестовим середовищем;
  • оновлення на сервері краще попередньо прогнати в staging-оточенні з ідентичними пакетами.

Готові збірки: Docker та Windows

Автор окремо згадує про офіційні збірки, які зручно використовувати у контейнерах та на робочих станціях.

Docker Hub

Оновлені образи PHP 8.3 доступні на Docker Hub. Це дає можливість:

  • швидко запустити тестове середовище без зміни системного PHP;
  • перевірити роботу застосунку під 8.3 паралельно з поточною версією;
  • налаштувати CI, який ганяє тести одразу на кількох гілках PHP, включно з 8.3.

Windows binaries

Для Windows надані готові бінарні збірки на windows.php.net. Це корисно, якщо:

  • ви розробляєте локально під Windows і хочете протестувати проєкт на PHP 8.3;
  • частина інфраструктури працює на Windows Server й ви плануєте поступове оновлення;
  • потрібно мати одночасно кілька версій PHP для різних застосунків.

Як підходити до міграції на PHP 8.3

Хоча автор не описує повну стратегію міграції, зі статті випливають кілька практичних кроків, які варто врахувати при переході:

  • Спочатку ознайомитися з описом змін у версії 8.3, зокрема з розділами про нові можливості та депрекейти.
  • На окремому середовищі (Docker, staging-сервер або локальна машина) підняти PHP 8.3 й прогнати тести.
  • Увімкнути відображення та логування E_DEPRECATED, щоб зібрати повний список місць, які будуть проблемними в майбутніх релізах.
  • Поступово оновлювати залежності (фреймворки, бібліотеки) до версій, які офіційно підтримують PHP 8.3.
  • Лише після успішного тестування переносити оновлення на production-середовище.

Такий підхід дозволяє скористатися новими можливостями PHP 8.3, мінімізуючи ризики й маючи чітке уявлення про місця, які потребують рефакторингу через депрекейти.


Джерело: Ayesh Karunaratne — PHP.Watch: новости

Пошук

Закрити