Новий PHP 8.5 та OpenCart

OpenCartBot - 24.11.2025
Новий PHP 8.5 та OpenCart

20 листопада 2025 року вийшов черговий великий реліз PHP - версія 8.5. Цей реліз має цікаві нововведення для розробників, але як завжди, постає питання сумісності з існуючими системами, зокрема й OpenCart. У цьому матеріалі розглянемо ключові зміни та їхній вплив на розробку модулів і розширень для OpenCart та й загалом на систему.

Що нового в PHP 8.5

  • Нове вбудоване розширення URI
    • PHP 8.5 отримав вбудоване розширення для роботи з URI, що відповідає стандартам RFC 3986 та WHATWG URL. Це особливо корисно для e-commerce платформ, які активно працюють з URL для SEO та маршрутизації.
  • Оператор каналів (Pipe operator)
    • Новий оператор `|>` дозволяє створювати ланцюжки функцій без проміжних змінних. Це покращує читаність коду та може бути корисним при розробці модулів OpenCart.
  • Покращене клонування об'єктів
    • Функція `clone()` тепер підтримує модифікацію властивостей під час клонування, що спрощує реалізацію патерну "with-er" для readonly класів.
  • Атрибут #[\NoDiscard]
    • Новий атрибут попереджає, коли значення, що повертається функцією, не використовується, що допомагає уникати помилок у розробці.
  • Нові функції
    • У PHP додались корисні функції - array_first() і array_last(), які відповідно повертають перший або останній елемент масиву. Якщо масив порожній, обидві функції повертають null.

Сумісність OpenCart з PHP 8.x

Перед розглядом чи взагалі можливо перейти на нову версію PHP, треба зрозуміти поточну ситуацію з підтримкою PHP 8.x в OpenCart:

- OpenCart 3.0.3.9-3.0.4.1 - PHP 7.4, 8.0, 8.1, 8.2, 8.3

- OpenCart 3.0.5.0 (планується) - PHP 8.1, 8.1, 8.2, 8.3, 8.4

- OpenCart 4.x - PHP 8.0+

Запровадження PHP 8.5 матиме і позитивні, і потенційно проблемні наслідки. До переваг належать покращення роботи з URL, зручніший підхід до обробки даних через pipe-оператор та гнучкіше використання клонування об’єктів. Проте можливі складнощі пов’язані з deprecated-функціоналом, суворішою типізацією та несумісністю частини сторонніх модулів. PHP 8.5 робить застарілими такі конструкції, як (boolean), (integer), (double), (binary), а також старі варіанти case; у switch і деякі особливості роботи з масивами. Це може викликати помилки у старому коді.

Для власників магазинів на OpenCart у найближчі 6-12 місяців доцільно залишатися на PHP 8.1–8.3. Перехід на PHP 8.5 рекомендується робити лише після тестування на окремому staging-середовищі. Варто також оновити платформу щонайменше до 3.0.4.1, якщо використовується значно старіша версія.

Перед майбутнім оновленням важливо провести аудит усіх встановлених модулів, з’ясувати їхню сумісність із PHP 8.5 і за потреби підготувати оновлення або заміну. У коді бажано завчасно замінити застарілі касти типів, перевірити конструкції switch (case з крапкою і комою застарів) і оновити роботу з масивами.

Розробникам модулів OpenCart

Масово адаптовувати модулі під PHP 8.5 поки що зарано, бо сама система наразі не підтримує PHP 8.5 офіційно, як і багато бібліотек також. Використовувати конструкції, які підтримує лише PHP 8.5, також не варто, оскільки розробники мають враховувати сумісність їх продуктів з різними користувацькими системами. Але розробники вже зараз можуть потестувати свої модулі з PHP 8.5 і принаймні виправити всі помилки і попередження.

Приклад деяких застарілих операторів

Замість

   $bool = (boolean) $value;
   $int = (integer) $value;

Використовуйте

   $bool = (bool) $value;
   $int = (int) $value;

Приклади використання нових можливостей (лише для PHP 8.5)

Використання нового URI розширення

   use Uri\Rfc3986\Uri;

   $uri = new Uri($url);
   $cleanHost = $uri->getHost();

Pipe operator для обробки даних

   $cleanTitle = $title
       |> trim(...)
       |> str_replace(' ', '-', ...)
       |> strtolower(...);


Реліз PHP 8.5 - чудова новина, безперечно, але його використання потребує обережного підходу в існуючих OpenCart проектах. Основні ризики пов'язані не з новим функціоналом, а з видаленням застарілого коду та більш строгими перевірками типів. Переходьте на нові версії PHP тільки після повного тестування та підготовки.


Рекомендовані модулі


Інші статті