PHP 8.4: что реально полезного завезли

2026-08-10 10:00:00

Каждый релиз PHP кто-то говорит «ну наконец-то нормальный язык», а кто-то — «опять сахар». Разберём по-честному, что из PHP 8.4 реально меняет повседневный код.

Property hooks

Больше не нужно городить приватное поле + геттер + сеттер ради простой нормализации значения:

class User
{
    public string $name {
        set(string $value) {
            $this->name = trim($value);
        }
        get => ucfirst($this->name);
    }
}

$u = new User();
$u->name = '  alex  ';
echo $u->name; // "Alex"

Раньше это были 8-10 строк бойлерплейта на каждое поле. Теперь — логика прямо на объявлении свойства, без магии __get/__set и без потери подсказок в IDE.

Asymmetric visibility

Наконец можно сделать свойство публично читаемым, но приватно изменяемым, без ритуала «приватное поле + публичный геттер»:

class Order
{
    public private(set) string $status = 'new';

    public function markPaid(): void
    {
        $this->status = 'paid';
    }
}

Снаружи $order->status читается свободно, а поменять его можно только изнутри класса. Это ровно то, ради чего раньше писали десятки геттеров без сеттеров.

array_find, array_any, array_all

Мелочь, но приятная — не нужно больше руками писать foreach ради банальной проверки:

$hasAdmin = array_any($users, fn($u) => $u['role'] === 'admin');
$firstAdmin = array_find($users, fn($u) => $u['role'] === 'admin');

Итог

Ничего революционного, но каждая из этих фич убирает конкретный кусок бойлерплейта, который раньше писали руками в каждом втором проекте. Обновляться стоит хотя бы ради property hooks.