PHP в 2021

Ссылка на оригинал

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

Как я говорил уже не раз, PHP уже не тот самый язык, которым он был 10 лет назад, и это потрясающе. Это быстрый и надежный язык, используемый для создания больших и маштабируемых приложений. Давайте вспомним о самых заметных изменениях в PHP за последний год, изменениях в языке и в сообществе.

PHP 8 и далее

Новая мажорная версия, PHP 8, вышла в предыдущем году. Я уже писал о нем много раз, не буду повторяться тут. Как всегда, производительность только растет, это видно на бенчмарках от Kinsta.

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

Я думаю, что такие возможности как аннотации, именованные аргументы и объявление свойств прямо в конструкторе также заслуживают внимания, так как они определенно поспособствовали тому, что PHP 8 получился настолько крутым!

Тем временем, команда PHP уже работает над следующей версией - 8.1, который будет выпущен в конце года. В настоящее время, наиболее значительными возможностями можно назвать перечисления и файберы, о них чуть позже в этом посте.

Год за годом выпускается стабильная версия, с кучей разных возможностей и улучшениями для программистов. Обновление и переход на новую версию больше не является такой большой проблемой. Я обновил некоторые свои проекты с PHP 7.4 до 8 и это заняло всего около часа на каждый проект. Больше нет весомых причин оставаться на старых версиях.

Типизация в PHP

Есть действительно хорошие новости касательно типизации в PHP: перечисления будут добавлены в PHP 8.1. Более того, некоторые мейнтейнеры инструментов статического анализа вносят свой вклад в разработку PHP через публикацию RFC. Один из них добавляет тип never, что полезно для статического анализа.

Продолжая тему статического анализа, PhpStrom добавил встроенную поддержку Psalm и PhpStan. Большой шаг в сторону дальнейшей адаптации.

К сожалению, до сих пор нет поддержки дженериков. Есть некоторые серьезные препятствия для этого, так как PHP является языком с динамической типизацией. Никита подробно описал эти проблемы здесь. Лично для меня, мой подход мог бы быть простым выходом: поддерживать дженерики, которые удаляются в рантайме и полагаться только на статический анализ. Это требует большего, чем просто техническое решение, потребуется смена мышления в сообществе PHP. Возможно, однажды это станет жизнеспособным вариантом, но пока еще нет.

Асинхронный PHP

Не так давно стало известно, что в PHP будут добавлены корутины, в PHP 8.1. Хотя файберы - так они называются - могут не так сильно изменить расклад.

Даже несмотря на то, что файберы являются маленьким винтиком в большом механизме асинхронности, RFC вызывал всплеск интереса со стороны сообщества, что конечно очень хорошо. Асинхронные фреймворвки Amphp и ReactPHP набирают популярность и недавно Laravel заявил о встроенной поддержке Swoole.

Сообщество

Я не могу не упомянуть Composer - де-факто стандартный менеджер пакетов. Он получил мажорное обновление в октябре 2020, Composer 2.0. В этой версии было множество улучшений в сторону UX, но наиболее важным является большой прирост производительности, иногда даже в три раза на чистых установках.

Говоря о Composer, мне нравится измерять текущее состояние экосистемы PHP через изменение количества доступных пакетов. В прошлом году я говорил о ±25 млн. скачиваниях в день. Сейчас же, цифра более чем удвоилась, до ±60 млн ежедневно.

Наконец, посмотрите на график, который показывает количество версий и пакетов. Его также можно посмотреть на их сайте. Можно увидеть как растет здоровая экосистема, и это далеко не конец.

Язык

В завершение, пожалуй, хотелось бы вспомнить все то, что было добавлено в PHP за последние годы. Если вы не следили за разработкой, то вам наверняка будет интересно. Мне кажется, что это показатель того, что сообщество растет и людей, вовлеченных в разработку языка, становится все больше. И я абсолютно уверен, что будет только больше.

  • Перечисления
  • Файберы
  • Аннотации
  • Именованные аргументы
  • match
  • Объявление свойств в конструкторе
  • Короткие замыкания
  • ?? оператор
  • Трейты
  • Типизированные свойства
  • spread-оператор
  • JIT
  • FFI
  • Возвращаемые типы
  • Генераторы
  • и многое другое

Все, что нужно сказать: PHP живет и очень хорошо. С каждым годом я все больше доволен выбранным направлением развития, и конечно же я собираюсь использовать его еще долгие годы.

Ссылка на оригинал

Дата публикации: 08.05.2021