HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p>24 ноября 2021 года на сайте<a>php.net</a>появилось уведомление о выходе PHP 8.1.0. Это последний второстепенный выпуск, в котором разработчики существенно увеличили производительность языка и добавили множество новых функций. Посмотрим основные обновления и комментарии к релизу от пользователей Reddit.</p>
1 <p>24 ноября 2021 года на сайте<a>php.net</a>появилось уведомление о выходе PHP 8.1.0. Это последний второстепенный выпуск, в котором разработчики существенно увеличили производительность языка и добавили множество новых функций. Посмотрим основные обновления и комментарии к релизу от пользователей Reddit.</p>
2 Сравнение производительности PHP 8.1 с другими версиями языка. Изображение:<a>php.net</a><p>В PHP 8.1 появился новый тип данных - перечисления (enum). Они заменяют набор констант и позволяют описывать структуры с фиксированным количеством значений. Это облегчает процесс прототипирования приложений и повышает надёжность кода.</p>
2 Сравнение производительности PHP 8.1 с другими версиями языка. Изображение:<a>php.net</a><p>В PHP 8.1 появился новый тип данных - перечисления (enum). Они заменяют набор констант и позволяют описывать структуры с фиксированным количеством значений. Это облегчает процесс прототипирования приложений и повышает надёжность кода.</p>
3 enum Status { case Draft; case Published; case Archived; } function acceptStatus(Status $status) {...}<p>В предыдущих версиях PHP разработчики не могли устанавливать неизменяемые объекты значений - у них не получалось один раз инициализировать нужные свойства и больше к ним не возвращаться. Приходилось делать все свойства закрытыми, использовать общедоступный геттер и жертвовать потребительской эргономикой.</p>
3 enum Status { case Draft; case Published; case Archived; } function acceptStatus(Status $status) {...}<p>В предыдущих версиях PHP разработчики не могли устанавливать неизменяемые объекты значений - у них не получалось один раз инициализировать нужные свойства и больше к ним не возвращаться. Приходилось делать все свойства закрытыми, использовать общедоступный геттер и жертвовать потребительской эргономикой.</p>
4 <p>Теперь можно добавлять Readonly-свойства, которые не будут менять значения объектов после инициализации. Это особенно полезно при работе с объектами значений или передачи данных, которые нужно защитить от вмешательства извне.</p>
4 <p>Теперь можно добавлять Readonly-свойства, которые не будут менять значения объектов после инициализации. Это особенно полезно при работе с объектами значений или передачи данных, которые нужно защитить от вмешательства извне.</p>
5 class BlogData { public readonly Status $status; public function __construct(Status $status) { $this-&gt;status = $status; } }<p>Следующая фича - файберы. Это низкоуровневые компоненты, которые нужны для упрощения управления параллелизмом в PHP. С помощью файберов можно находить, приостанавливать и возобновлять выполнения блоков кода из разных позиций стека. Функция получит поддержку во фреймворках ReactPHP и Amph.</p>
5 class BlogData { public readonly Status $status; public function __construct(Status $status) { $this-&gt;status = $status; } }<p>Следующая фича - файберы. Это низкоуровневые компоненты, которые нужны для упрощения управления параллелизмом в PHP. С помощью файберов можно находить, приостанавливать и возобновлять выполнения блоков кода из разных позиций стека. Функция получит поддержку во фреймворках ReactPHP и Amph.</p>
6 $response = $httpClient-&gt;request('https://example.com/'); print json_decode($response-&gt;getBody()-&gt;buffer())['code'];<p>В инициализаторах появилась поддержка new-выражений, которые можно использовать внутри значений параметров, для аргументов атрибутов, вложенных атрибутов, инициализаторов статистический переменных и глобальных констант.</p>
6 $response = $httpClient-&gt;request('https://example.com/'); print json_decode($response-&gt;getBody()-&gt;buffer())['code'];<p>В инициализаторах появилась поддержка new-выражений, которые можно использовать внутри значений параметров, для аргументов атрибутов, вложенных атрибутов, инициализаторов статистический переменных и глобальных констант.</p>
7 class MyController { public function __construct( private Logger $logger = new NullLogger(), ) {} }<p>Чтобы посмотреть все изменения, нужно<a>посетить страницу официального пресс-релиза PHP 8.1</a>. Для обновления<a>загрузите исходный код</a>и <a>руководство по миграции</a>. Если вы пишете код в PhpStorm -<a>почитайте</a>, какие функции из PHP 8.1 уже есть в IDE.</p>
7 class MyController { public function __construct( private Logger $logger = new NullLogger(), ) {} }<p>Чтобы посмотреть все изменения, нужно<a>посетить страницу официального пресс-релиза PHP 8.1</a>. Для обновления<a>загрузите исходный код</a>и <a>руководство по миграции</a>. Если вы пишете код в PhpStorm -<a>почитайте</a>, какие функции из PHP 8.1 уже есть в IDE.</p>
8 <p>На Reddit основная часть разработчиков довольна тем, как развивается PHP и какие новые возможности в нём появляется. Из негативных моментов можно отметить комментарий пользователя SavishSalacious, который хочет увидеть в новой версии дженерики.</p>
8 <p>На Reddit основная часть разработчиков довольна тем, как развивается PHP и какие новые возможности в нём появляется. Из негативных моментов можно отметить комментарий пользователя SavishSalacious, который хочет увидеть в новой версии дженерики.</p>
9 Скриншот:<a>Reddit</a><p>Ещё можно выделить сообщение пользователя L3tum, который не спешит обновлять проекты на PHP 8.1 из-за возможных ошибок в совместимости со старыми версиями. На этот комментарий ответил jpresutti, который перевёл на новую версию PHP свой фреймворк<a>FEAST</a>и не обнаружил проблем. Больше это никто не обсуждал.</p>
9 Скриншот:<a>Reddit</a><p>Ещё можно выделить сообщение пользователя L3tum, который не спешит обновлять проекты на PHP 8.1 из-за возможных ошибок в совместимости со старыми версиями. На этот комментарий ответил jpresutti, который перевёл на новую версию PHP свой фреймворк<a>FEAST</a>и не обнаружил проблем. Больше это никто не обсуждал.</p>
10 Скриншот:<a>Reddit</a>
10 Скриншот:<a>Reddit</a>