Реліз РНР 8.4: що нового
Після року кропіткої праці розробників, світ побачив реліз PHP 8.4 — версії, яка не лише суттєво розширює можливості, але й закладає фундамент для ще більш досконалої екосистеми. Хоча деякі зміни порушують сумісність із попередніми версіями, це відкриває шлях до покращення продуктивності та зручності кодування.
Що нового?
PHP 8.4 отримав новий JIT-компілятор, створений на основі IR Framework. Універсальний підхід дозволяє генерувати проміжне представлення коду, яке адаптується під будь-яку архітектуру. Це забезпечує суттєвий приріст продуктивності та робить процес виконання коду ще ефективнішим.
Обробники властивостей: код, що дихає простотою
Новий функціонал дозволяє додавати кастомну логіку для роботи з властивостями об’єктів без традиційних __get і __set. Це не лише зменшує обсяг коду, але й робить його зрозумілішим:
class User { public string $name { set { if (strlen($value) === 0) { throw new ValueError("Name must be non-empty"); } $this->name = $value; } } public function __construct(string $name) { $this->name = $name; } }
Спрощення синтаксису
Забудьте про складні записи при використанні new — тепер доступний скорочений варіант:
$name = new MyClass()->method();
«Ліниві об’єкти»
Об’єкти тепер ініціалізуються лише за потреби, оптимізуючи використання пам’яті.
Новий атрибут #[\Deprecated]
Позначайте застарілі функції разом із підказками щодо їх заміни, наприклад:
#[\Deprecated("use newFunction() instead", since: "1.1")] function oldFunction() { // ... }
Корисні новинки для масивів і часу
В оновлені також були додані пару корисних функцій для роботи з масивами та часом.
- Функції для масивів:
array_find()
— пошук першого елемента за умовою.array_any(), array_all()
— перевірка елементів на відповідність умові.- Робота з часом:
- Отримання та встановлення мікросекунд
(getMicrosecond(), setMicrosecond()).
- Створення об’єкта за міткою часу
(createFromTimestamp()).
Нові методи для строк і чисел
Додано функції для обрізки рядків (mb_trim())
, зміни регістру символів (mb_ucfirst())
, а також роботи з великими числами (bcceil(), bcround()).
Безпека на новому рівні
Оновлення ускладнило експлуатацію буферних вразливостей і посилило рандомізацію тимчасових файлів.
Що залишилося у минулому?
PHP 8.4 прощається із:
- Константами
E_STRICT, MYSQLI_REFRESH_*.
- Деякими функціями
(mysqli_ping())
і методами(mysqli::refresh()).
- Використанням _ як імені класу.
PHP 8.4 вже готовий до роботи! Оновлюйтеся, тестуйте нові функції та діліться своїми враженнями у коментарях.
Покажіть свій найкращий код! 🔥
26 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів