24 ноября 2021 года на сайте php.net появилось уведомление о выходе PHP 8.1.0. Это последний второстепенный выпуск, в котором разработчики существенно увеличили производительность языка и добавили множество новых функций. Посмотрим основные обновления и комментарии к релизу от пользователей Reddit.
В PHP 8.1 появился новый тип данных — перечисления (enum). Они заменяют набор констант и позволяют описывать структуры с фиксированным количеством значений. Это облегчает процесс прототипирования приложений и повышает надёжность кода.
В предыдущих версиях PHP разработчики не могли устанавливать неизменяемые объекты значений — у них не получалось один раз инициализировать нужные свойства и больше к ним не возвращаться. Приходилось делать все свойства закрытыми, использовать общедоступный геттер и жертвовать потребительской эргономикой.
Теперь можно добавлять Readonly-свойства, которые не будут менять значения объектов после инициализации. Это особенно полезно при работе с объектами значений или передачи данных, которые нужно защитить от вмешательства извне.
Следующая фича — файберы. Это низкоуровневые компоненты, которые нужны для упрощения управления параллелизмом в PHP. С помощью файберов можно находить, приостанавливать и возобновлять выполнения блоков кода из разных позиций стека. Функция получит поддержку во фреймворках ReactPHP и Amph.
В инициализаторах появилась поддержка new-выражений, которые можно использовать внутри значений параметров, для аргументов атрибутов, вложенных атрибутов, инициализаторов статистический переменных и глобальных констант.
Чтобы посмотреть все изменения, нужно посетить страницу официального пресс-релиза PHP 8.1. Для обновления загрузите исходный код и руководство по миграции. Если вы пишете код в PhpStorm — почитайте, какие функции из PHP 8.1 уже есть в IDE.
На Reddit основная часть разработчиков довольна тем, как развивается PHP и какие новые возможности в нём появляется. Из негативных моментов можно отметить комментарий пользователя SavishSalacious, который хочет увидеть в новой версии дженерики.
Ещё можно выделить сообщение пользователя L3tum, который не спешит обновлять проекты на PHP 8.1 из-за возможных ошибок в совместимости со старыми версиями. На этот комментарий ответил jpresutti, который перевёл на новую версию PHP свой фреймворк FEAST и не обнаружил проблем. Больше это никто не обсуждал.