Я пишу ежегодный пост «PHP в 20XX» уже в четвертый раз, и должен признать, что никогда еще не был так взволнован этим, как в этом году: мы увидели потрясающие новые функции, добавленные в PHP, с различными вещами. как атрибуты, перечисления, продвигаемые свойства и волокна; и вдобавок ко всему, сообщество статического анализа делает большие успехи, моя личная любимая функция — PhpStorm, которая теперь поддерживает дженерики при написании кода.
Впереди захватывающие времена, давайте взглянем на современный PHP!
Содержание статьи
# PHP 8.1
Не могу не начать этот список с самой новой версии PHP, выпущенной чуть больше месяца назад. Мои основные проекты уже готовятся к работе на PHP 8.1 в продакшене, чему я, признаться, очень рад. Возможно, вы не ожидаете этого от второстепенной версии — в ней нет серьезных критических изменений, а добавлены только уведомления об устаревании, — но PHP 8.1 предлагает несколько очень интересных функций. вот моя личная тройка лучших.
Перечисления теперь встроены в язык:
перечисление Статус
{
дело проект;
дело опубликовано;
дело в архиве;
public функция цвет(): строка
{
возврат совпадение($это)
{
Статус::черновик => 'серый',
Статус::опубликовано => 'зеленый',
Статус::в архиве => 'красный',
};
}
}
Мы можем использовать new
в инициализаторах:
класс PostStateMachine
{
public функция __construct(
private State $state = new Draft()[194599]
) {
}
}
И, конечно же, свойства только для чтения:
класс PostData
{
public функция __construct(
public только для чтения string $title,
public только для чтения PostState $state,
public только для чтения DateTimeImmutable $publishedAt,
) {}
}
Что, в сочетании с расширенными свойствами PHP 8.0, делает некоторые классы данных очень чистыми. Чтобы наглядно представить разницу, вот тот же класс с той же функциональностью, написанный на PHP 5.6:
класс данные блога
{
частное $название;
частное $государство;
частное $ опубликовано в ;
public функция __construct(
$ название,
$ состояние,
$publishedAt = ноль
) {
$это->название = $название;
$это->состояние = $состояние;
$this->publishedAt = $publishedAt;
}
public функция getTitle()
{
возврат $это->название;
}
public функция getState()
{
возврат $это->состояние;
}
public функция getPublishedAt()
{
возврат $это->опубликовано в;
}
}
Понимаете, почему я взволнован? PHP получает эти удивительные улучшения синтаксиса с каждым выпуском. Писать об этом становится все веселее и веселее! Конечно, в современный PHP добавлено гораздо больше функций, посмотрите мое 3-минутное видео, если хотите краткое изложение, или вы можете прокрутить, чтобы продолжить чтение — в 2022 году о PHP будет гораздо больше интересного!
# Статический анализ
Я уже упоминал об этом вкратце: статический анализ в PHP значительно развивается.
- Фреймворки, такие как Laravel, все больше и больше используют статическую типизацию (написание кода и блоков документов с единственной целью помочь статическому анализу);
- В PhpStorm добавлена поддержка универсальных типов, это очень важно, если вы можете написать универсальный код и ваша IDE понимает его пока вы его пишете;
- PhpStan и псалом только растут; и наконец
- моя собственная серия информационных бюллетеней по статическому анализу пользуется успехом у более чем 1500 участников, все больше и больше людей интересуются этой темой.
Если вы просто хотите быстро узнать, почему статический анализ важен в PHP и почему я так им увлечен, вы можете прочитать эту запись в блоге: «Нам не нужны проверки типов во время выполнения».
Хотите узнать больше о PHP 8.1? Это дорога к PHP 8.1.
В течение следующих 10 дней вы будете ежедневно получать электронное письмо с информацией о новых и существующих функциях PHP 8.1; после этого вы будете автоматически отписаны, так что никакого спама или последующих действий.
Подпишись сейчас!
# Основа PHP
Два месяца назад мир PHP получил довольно важную новость, может быть, даже самую большую новость 2021 года: Никита, один из самых активных специалистов по поддержке ядра, уходит, чтобы работать над LLVM, но в то же время появилась и новая инициатива. при поддержке нескольких крупных компаний, чтобы, наконец, сделать основную разработку устойчивой.
Короче говоря, есть PHP Foundation, некоммерческая организация, единственной целью которой является финансирование разработки ядра PHP. Инициатива продвигается JetBrains, которая уже вложила в проект 100 000 долларов. Наряду со многими другими, они собрали 329 920,75 долларов США; хорошее начало!
Эти деньги используются для финансирования основной разработки и открывают возможности для работы над PHP для людей, которые раньше не могли этого сделать. Подробнее о миссии и целях Фонда можно прочитать в блоге JetBrains.
# Экосистема
Как и каждый год, я не могу не упомянуть Packagist, в котором сейчас зарегистрировано более 3 миллионов версий и более 300 000 пакетов. Как видите, экосистема продолжает расти и расти, и 2022 год не изменится.
О, кстати, совсем недавно Packagist перешагнул рубеж, обработав более 50 миллиардов установок. Поздравляем упаковщика!
# Асинхронный PHP
Одним интересным событием в асинхронном сообществе стало то, что разработчики из Amp и ReactPHP — двух основных асинхронных игроков — объединились, чтобы создать совместимую с оптоволокном реализацию цикла событий под названием Revolt PHP.
По сравнению с сообществом в целом, асинхронный PHP используется лишь небольшой его частью; но, тем не менее, еще предстоит увидеть, как асинхронное сообщество становится сильным и охватывает современный PHP.
# Бессерверный PHP
Интересная разработка, за которой я наблюдал параллельно, — бессерверный PHP. Мой приятель Matthieu Napoli поставил перед собой задачу рассказать PHP-разработчикам об этом относительно новом способе использования PHP, и, кажется, у него это неплохо получается. Вы можете ознакомиться с Bref, его проектом с открытым исходным кодом, призванным упростить безсерверный PHP, или ознакомиться с его курсом по бессерверному PHP в 2022 году.
У меня не было никаких примеров его использования, но я знаю все больше и больше людей, использующих бессерверный PHP в продакшене, так что определенно стоит за этим присматривать.
Это то, что больше всего выделялось лично для меня в 2021 году и что меня вдохновляет на PHP в 2022 году. Потрясающий новый синтаксис, стабильность для базовой разработки благодаря PHP Foundation, статический анализ становится все сильнее и лучше, и множество интересных событий в сообществе.
Что вас больше всего волнует? Дайте мне знать в Твиттере или по электронной почте; Я хотел бы услышать ваши мысли!