PHP в 2021 году
Если вы новичок в веб-программировании, возможно стоите на распутье и сомневаетесь куда двигаться дальше, то вам определенно стоит почитать этот пост
Так же, как в 2020 и 2019 годах подведем итоги о том, стоит ли изучать PHP в 2021 году.
Как я говорил в предыдущих постах: PHP уже не тот язык, которым был десять лет назад, и мы все очень благодарны за это. Это достаточно быстрый и надежный язык, используемый для создания масштабных приложений. Итак, давайте обсудим некоторые из наиболее заметных изменений PHP за последний год для языка и сообщества.
PHP 8 и дальше
Новая основная версия PHP 8 появилась в конце прошлого года. Я много писал постов по этой теме, и не буду повторять все это здесь. В принципе все как обычно, производительность только улучшается, и тесты это доказывают.
Есть JIT, который, улучшает производительность некоторых проектов, а также предварительная загрузка, которая имеет в целом положительное влияние, если вы не используете shared хостинг.
Я думаю, что такой функционал, как атрибуты (также известные как «аннотации»), именованные аргументы и объявляемые свойства в конструкторе также заслуживают упоминания, поскольку они определенно способствовали тому, что PHP 8 стал таким замечательным выпуском.
Тем временем основная команда уже работает над следующей версией PHP 8.1, которая будет выпущена где-то к концу 2021 года. На данный момент наиболее важными функциями являются перечисления (Enum) и файберы (Fiber).
Год за годом основной команде удается представить сообществу новый стабильный выпуск, наполненный множеством функций и качественных улучшений. Путь обновления также не так уж и сложен. Я уже обновил некоторые из моих собственных проектов с PHP 7.4 до PHP 8, и это заняло от 30 до 60 минут на проект. На самом деле нет никаких веских причин оставаться на старых версиях!
Система типов PHP
Когда дело доходит до типов, есть очень интересные новости: перечисления будут добавлены в PHP 8.1 . Вдобавок к этому мы также видели, как некоторые разработчики инструментов статического анализа внесли свой вклад в исходный код PHP, разместив свой первый RFC. Это добавляет тип возврата - never, полезное дополнение для статического анализа.
Говоря об инструментах статического анализа, PhpStorm добавил встроенную поддержку Psalm и PhpStan , что является большим шагом на пути к более широкому применению.
К сожалению, дженерики по-прежнему не поддерживаются. Есть несколько серьезных препятствий этому, особенно с учетом того, что мы все еще имеем дело с языком с динамической типизацией. О возникших проблемах Никита Попов написал здесь. А вот, например, автор блога stitcher.io Брент описал подход, который был бы простым выходом: поддерживать дженерики, не во время выполнения, а полагаться на статический анализ. Это так же потребует изменения мышления в сообществе PHP в целом. Может быть, однажды это станет жизнеспособным вариантом, но пока что нет.
Асинхронный PHP
Буквально недавно были большие новости: PHP получает корутины, также известные как "зеленые потоки" - в PHP 8.1! Хотя файберы - так их называют - могут не так уж и сильно изменить правила игры, как кажется на первый взгляд .
Несмотря на то, что сами файберы могут быть лишь маленькой шестеренкой в том, что является большой асинхронной машиной, RFC снова вызвал интерес в асинхронном сообществе, чему мы можем только радоваться. Популярность асинхронных фреймворков, таких как Amphp и ReactPHP, растет, и недавно тот же Laravel объявил о встроенной поддержке Swoole и RoadRunner.
Composer 2.0
Ну и конечно же, нельзя не упомянуть о новом выпуске Composer, де-факто стандартный менеджер пакетов. В октябре 2020 года вышел новый основной выпуск: Composer 2.0 . Эта версия поставляется с несколькими улучшениями UX, но, что наиболее важно, в ней значительно улучшена производительность, иногда даже утроенная при чистой установке. И это очень заметно на боевых проектах. Если вы до сих пор не обновились, советую не тянуть, прирост скорости работы оооочень заметен.
Говоря о композере, мне нравится измерять текущее состояние экосистемы PHP, просматривая доступные пакеты с течением времени. В прошлом году я говорил о ±25 миллионах загрузок в день, сегодня это число увеличилось более чем вдвое, и мы уже видим ±60 миллионов загрузок в день.
Наконец, взгляните на этот график, в котором показано количество пакетов и версий с течением времени. Его также можно найти на сайте Packagist.com . Вы можете ясно видеть, как растет здоровая экосистема, и конца этому не видно.
Язык
Давайте закончим напоминанием обо всем, что было добавлено в PHP за последние годы. Если вы не следите за его развитием, вам действительно стоит изучить этот список. Я думаю, что это показывает рост сообщества и основной команды разработчиков за последние годы, и я уверен, что это еще не все.
- Перечисления
- Файберы
- Атрибуты
- Именованные аргументы
- Match v2
- Объявление свойств в конструкторе
- Короткие замыкания
- Нулевой оператор объединения
- Трейты
- Типизированные свойства
- Оператор распаковки
- JIT
- FFI
- Объявления типа возврата
- Генераторы
- и пр.
Что думаешь?