PHP 8.4 (листопад 2024) - головні зміни:
Property hooks - логіка читання й запису властивості без геттерів і сеттерів:
public string $email {
set => mb_strtolower($value);
}
Асиметрична видимість - різні права на читання й запис: public private(set) string $status.
new без дужок у ланцюжку:
$name = new Profile($user)->displayName(); // раніше: (new Profile($user))->displayName()
Нові функції масивів: array_find(), array_find_key(), array_any(), array_all():
$admin = array_find($users, fn (User $u) => $u->isAdmin());
$allPaid = array_all($orders, fn (Order $o) => $o->isPaid());
Лінива ініціалізація об'єктів (lazy objects) - вбудована підтримка ghost- і proxy-об'єктів, що ініціалізуються при першому зверненні. Корисно для ORM і контейнерів.
#[\Deprecated] - позначати власні функції й методи застарілими, і PHP сам видаватиме E_USER_DEPRECATED при виклику.
Інше:
- Новий DOM API з підтримкою HTML5 (
Dom\HTMLDocument). mb_trim(),mb_ucfirst(),mb_lcfirst().- BCMath отримав об'єктний API (
BcMath\Number) з перевантаженням операторів. request_parse_body()- розбір тіла дляPUT/PATCH.
Застарілим стало: неявно nullable параметри - function f(Type $x = null) тепер видає попередження; правильно ?Type $x = null. Це одна з найчастіших змін при оновленні старого коду.