Після року розробки представлено реліз мови програмування PHP 8.4. Нова версія включає кілька важливих оновлень, серед яких варто виділити:
- Запропоновано нову реалізацію JIT-компілятора, побудовану на базі IR Framework. Додано підтримку прикріплення обробників властивостей (property hook), які підтримують додачу додаткової логіки. Це дає можливість значно скоротити обсяг коду.
- Дозволено вказівку посилань на методи конструкції “new” без відокремлювальних дужок. Тобто. замість “$name = (new MyClass())->method()” тепер можна вказувати “$name = new MyClass()->method()“.
- Додано можливість асиметричного управління видимістю властивостей об’єктів (public, private, protected), окремо для операцій запису (set) та читання (get).
- Надано штатну підтримку “ледачих” об’єктів (lazy), ініціалізація яких здійснюється в момент першого використання.
- Додано атрибут “#[\Deprecated]“, призначений для позначення застарілих функцій, класів та методів.
- Додані методи DateTime::getMicrosecond() та DateTimeImmutable::setMicrosecond($microsecond) для отримання та встановлення часу з мікросекундною точністю, а також метод DateTime::createFromTimestamp().
- Додані нові функції mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst(), bcceil(), bcdivmod(), bcfloor() та bcround(), pcntl_getcpu(), pcntl_getc , pcntl_setns(), pcntl_waitid(), http_get_last_response_headers(), http_clear_last_response_headers(), fpow().
- Операції exit та die тепер можна викликати у формі повноцінних функцій, які допускається передавати як аргумент у інші функції. Раніше можливості функцій exit() і die() були дуже обмежені.
- Додано зміни, що ускладнюють експлуатацію вразливостей, викликаних виходом за межі буфера, а також тих, які посилюють рандомізацію імен файлів, що створюються через функцію tempnam().
- Оголошено застарілою поведінку, при якій для параметрів функцій із значенням null, що присвоєно за замовчуванням, автоматично дозволялося присвоєння значень null.
- Оголошено застарілими низку констант.
Також варто відмітити випуск статичного аналізатора PHPStan 2.0, який дозволяє знаходити помилки в коді PHP без його виконання та використання unit-тестів.