Вышла новая версия PHP 8.5 Обложка: Skyread

Вышла новая версия PHP 8.5

Новости
Главное:

  • Выпущена новая версия языка программирования PHP 8.5 с важными изменениями и новыми возможностями.
  • Введён оператор пайп «|>», улучшена поддержка работы с объектами и добавлен атрибут #[NoDiscard] для контроля использования возвращаемых значений.
  • Объявлены устаревшими некоторые синтаксические конструкции, добавлены новые функции для работы с массивами, URI и обработчиками ошибок.

20 ноября 2025 года состоялся официальный релиз PHP 8.5, включающий сборки для операционной системы Windows. Эта версия представляет собой очередной шаг развития популярного языка программирования, используемого преимущественно для веб-разработки. PHP 8.5 содержит ряд обновлений и изменений, существенно влияющих на совместимость с предыдущими версиями.

Одно из ключевых нововведений – добавление оператора «|>» (pipe). Этот оператор призван упростить цепочки вызовов функций, передавая результат одной функции напрямую в другую без необходимости использовать промежуточные переменные. Нюансы его работы учитывают как функции с одним аргументом, так и с несколькими, при этом для сложных случаев применяется механизм замыканий. Такое решение способствует более чистому и читаемому коду.

Другое важное обновление касается работы с объектами: теперь можно присваивать новые значения клонируемым объектам прямо при клонировании с помощью передачи ассоциативного массива в функцию clone(). Это упрощает создание модифицированных копий объектов без необходимости дополнительного кода.

Для повышения надёжности кода введён атрибут #[NoDiscard]. Он позволяет помечать функции, у которых игнорирование возвращаемого значения считается ошибкой и приводит к соответствующему предупреждению от интерпретатора. Такой подход обеспечивает более строгий контроль и может помочь избежать логических ошибок.

Также в PHP 8.5 появилась поддержка замыканий и вызываемых объектов первого класса в константных выражениях, что расширяет возможности метапрограммирования и использования неизменяемых значений, вычисляемых на этапе компиляции. Однако такие замыкания должны быть статичными и не могут использовать переменные из внешней области.

Ещё одно улучшение касается обработки ошибок – теперь при возникновении фатальной ошибки к сообщению автоматически добавляется обратная трассировка вызовов (backtrace), что значительно облегчает диагностику и отладку.

Для работы с массивами появились функции array_first() и array_last(), возвращающие соответственно первый и последний элемент массива, что упрощает распространённые операции над данными структурами.

В релизе также представлен новый модуль URI, предоставляющий упрощённый API для разбора и обработки URL-адресов. Этот модуль базируется на сторонних библиотеках uriparser и lexbor и предназначен для качественной и быстрой работы с веб-ссылками.

Расширена функциональность атрибутов за счёт атрибута #[DelayedTargetValidation], позволяющего переносить проверку некоторых атрибутов с этапа компиляции на время выполнения, что повышает гибкость применения атрибутов.

Добавлены функции get_error_handler() и get_exception_handler(), предоставляющие инструменты для получения текущих обработчиков ошибок и исключений, что полезно для мониторинга и кастомизации обработки ошибок.

В стандартные модули были внесены следующие обновления: в Curl появилась возможность совместного использования дескрипторов с помощью curl_share_init_persistent(), а в Exif добавлена поддержка современных форматов изображений HEIF и HEIC.

Наряду с добавлением новых возможностей в PHP 8.5 объявлены устаревшими некоторые синтаксические конструкции и функциональность, в том числе нестандартный синтаксис приведения типов вроде «(integer)», использование обратных кавычек для выполнения команд, повторные объявления констант, и другие особенности. Это движение призвано очистить язык от устаревшего наследия и повысить его качество и предсказуемость.

Таким образом, PHP 8.5 представляет собой значительный шаг вперёд, предлагая разработчикам новые инструменты для повышения продуктивности и надёжности кода, а также задаёт направление для дальнейшего развития языка с учётом современных требований к программированию.

Tagged