Вышел PHP 8.4: обзор главных нововведений и улучшений

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Вышел новый релиз PHP 8.4: что изменилось и зачем обновляться

Сообщество разработчиков встретило долгожданный релиз PHP 8.4. Эта версия привносит не только точечные улучшения, но и несколько фундаментальных изменений синтаксиса, которые меняют подход к написанию кода. Если вы следите за экосистемой веб-разработки, этот релиз — важный шаг вперёд. Разберём главные нововведения.

Property Hooks: долгожданная лаконичность

Одно из самых обсуждаемых нововведений — property hooks (хуки свойств). Раньше, чтобы добавить логику при получении или установке значения свойства, нужно было писать геттеры и сеттеры (методы). Теперь это можно сделать прямо в объявлении свойства, что сокращает шаблонный код.

  • Пример: Вместо методов getFullName() и setFullName() вы пишете public string $fullName { get => ...; set => ...; }.
  • Польза: Код становится более читаемым и приближенным к современным языкам (Kotlin, C#).
  • Гибкость: Можно переопределять хуки в дочерних классах, что упрощает работу с наследованием.

Асимметричная видимость (Asymmetric Visibility)

Ещё одно важное новшество — возможность задавать разный уровень доступа для чтения и записи свойства. Раньше это требовало костылей или отдельных методов.

  • Синтаксис: public private(set) string $name; — свойство можно читать из любого места, но изменять только внутри класса.
  • Применение: Идеально для value objects и DTO, где важно защитить данные от внешнего изменения, но оставить их доступными для чтения.

Улучшения в типах и производительности

Разработчики PHP продолжают усиливать систему типов и оптимизировать движок.

  • Новые типы: Добавлена поддержка EXIT как типа для функций, которые прерывают выполнение (exit, die). Это повышает точность статического анализа.
  • JIT (Just-In-Time Compiler): Значительно улучшен. В PHP 8.4 JIT стал умнее: он лучше оптимизирует «тяжёлые» циклы и математические операции, что даёт прирост производительности в бенчмарках до 10-15%.
  • Garbage Collector: Переработан механизм сборки мусора. Новый алгоритм эффективнее обрабатывает циклические ссылки, снижая потребление памяти в долгоживущих процессах (например, в воркерах очередей).

Прочие заметные изменения

Помимо громких нововведений, в релизе есть множество мелких, но полезных улучшений:

  • BC Math: Добавлены новые функции для работы с числами произвольной точности.
  • curl: Обновлена поддержка протоколов и улучшена обработка ошибок.
  • Deprecations: Некоторые устаревшие функции (например, mysqli_ping) помечены как устаревшие — готовьтесь к их удалению в PHP 9.0.

Стоит ли обновляться?

Если вы используете современный стек (Laravel, Symfony) — обновление на PHP 8.4 рекомендуется. Property hooks и асимметричная видимость значительно упростят написание чистого кода. Для старых проектов проверьте совместимость ваших зависимостей, но в целом миграция с PHP 8.3 будет безб

Рекомендуем библотеки