PHP в 2023 году
Ежегодный пост о том, стоит ли изучать PHP в новом 2023 году.
Появившись в середине 90-х как скромный личный проект, PHP превратился в один из самых популярных языков для веб-разработки, на котором пишут от сайтов блогов до корпоративных приложений.
Это язык, который претерпел поразительную трансформацию в течении почти трех десятилетий. Даже за последние 10 лет PHP изменился так, как мы и представить себе не могли.
Каждый год выходит этот пост с некоторым взглядом назад и вперед. Итак приступим!
Фонд PHP
Начнем пожалуй с PHP Foundation, прошло чуть более года с момента создания фонда, на текущий момент коллектив состоит из 10 волонтеров и 6 разработчиков, которым платят за работу над языком PHP.
В прошлом году Никита Попов ушел в отставку и все были немного обеспокоены этим событием, т.к. он проделал огромную работу над PHP 8.x версии. Ставки были что 2022 год не будет каким-то умопомрачительным для PHP, а скорее просто работой над повышением стабильности. Что ни есть плохо на самом деле.
И можно сказать, что Фонд справился, недавно они опубликовали свой отчет за 2022 год и он показывает довольно впечатляющие цифры:
- всего в 2022 году было собрано $580 000
- фонд платит 6 разработчикам за работу над PHP
- участники фонда сделали почти половину всех коммитов в php-src
- они создали 8 новых RFC и только 1 из них был не реализован
Можно твердо делать выводы, что PHP Foundation - одно из лучших событий, произошедших с PHP за долгое время, и можно надеяться что в 2023 году они смогут улучшить язык еще больше. Если вы крупная коммерческая компания, использующая PHP в своей работе могу предложить вам подумать о пожертвовании в фонд.
PHP 8.2
Далее перейдем к последней версии языка на сегодняшний момент - PHP 8.2. Хоть он и является наименее запоминающимся релизом, но тем не менее имеет множество приятных функций, напомню про пару интересных штук:
readonly class ItemData
{
public function __construct(
public string $title,
public string $author,
public string $body,
public DateTimeImmutable $createdAt,
public PostState $state,
) {}
}
Совершенно новый рандомизатор:
$rng = $isProduction
? new Random\Engine\Secure()
: new Random\Engine\Mt19937(1234);
$randomizer = new Random\Randomizer($rng);
$randomizer->shuffleString('foobar');
Самостоятельные типы null, true и false:
function false(): false
{
return false;
}
Типы дизъюнктивных нормальных форм:
function generateSlug((HasTitle&HasId)|null $post)
{ /* … */ }
Отредактированные параметры:
function connect(
string $user,
#[\SensitiveParameter] string $password
) {
// …
}
и др., более подробно можно почитать в посте про PHP 8.2.
Экосистема
Стоит упомянуть что менеджер пакетов PHP - Packagist сейчас содержит 361 000 пакетов, что на 60 000 больше, чем в прошлом году:
В прошлом году общее количество установок пакетов преодолело отметку в более чем 50 миллиардов установок, но на текущий момент их более 74 миллиардов! То есть за год было сделано более 24 миллиардов установок, по 2 миллиарда в месяц! Это впечатляющие цифры! Все этого говорит о том, что экосистема PHP сильно растет.
Статистика версий
Дважды в год я публикую свой пост со статистикой версий. В этих постах я анализирую использование версии PHP в сообществе на основе данных Packagist. Я хотел бы снова поделиться графиком из этого поста: временная шкала между 2013 годом и настоящим, показывающая историю использования каждой версии
Можно увидеть, что несмотря на то, что использование PHP 8.* стремительно растет, большое количество людей по-прежнему используют более старые, медленные и небезопасные версии PHP . Я надеюсь, что в 2023 году число старых версий будет снижаться еще быстрее.
Так же говоря об апгрейдах, хочу особо отметить один инструмент: Rector. Rector — это бесплатный инструмент автоматизации, который помогает обновить кодовую базу PHP. Все, что от вас требуется - это небольшая настройка, и Rector сделает за вас огромный объем работы.
Я твердо верю, что "язык программирования" - это гораздо больше, чем компилятор: именно инструменты и экосистема играют равную роль в определении этого "языка программирования" и помогают ему развиваться, и я действительно думаю, что многие люди, проекты и компании выиграют, если они изучат использование инструментов автоматизации, таких как Rector.
Фреймворки
Поскольку мы заговорили об экосистеме, нельзя не упомянуть два крупнейших PHP-фреймворка на сегодняшний день: Laravel и Symfony. Хоть ваш покорный слуга любит и использует в большинстве своих проектов более специфический фреймворк Phalcon, я не могу не отдать должное тому как за последние годы значительно вырос Laravel.
Над фреймворком и его экосистемой работают 8 штатных разработчиков. Кроме того опрос среди разработчиков JetBrains сообщает, что 67% PHP-разработчиков работают с Laravel.
Хотя Symfony как фреймворк может быть менее популярным в наши дни по сравнению с Laravel, он по-прежнему остается одним из самых зрелых и стабильных фреймворков в сообществе PHP. Он чаще используется для разработки корпоративных приложений, но его отдельные компоненты популярны во всей экосистеме PHP - у Laravel также есть несколько зависимостей от компонентов Symfony. Неудивительно, что несколько пакетов Symfony попали в список лучших пакетов Packagist.
И как уже упомянул выше мой любимый фреймворк Phalcon так же не отстает в развитии, недавно была выпущена поддержка PHP 8.2, плюс в релиз вышел пакет мост для соединения фреймворка и высокопроизводительного сервера Swoole.
Фреймворк не так популярен как вышеназванные собратья, но является одним из самым производительным PHP-фреймворком на сегодняшний день, поскольку поставляется в виде Cи расширения PHP.
Так же не стоит забывать что выбор PHP-фреймворков достаточно богат, например по итогам статистики phpcommunity.ru использование фреймворков в ru сообществе:
CMS
Конечно же нельзя не сказать про популярные CMS, такие как WordPress, Joomla и пр. Буду честен у меня не такие теплые чувства к ним, да и ненависти какой-то нет, для своих задач они вполне нормальны для использования. Их легко установить и использовать. Но иногда отсутствие поддержки современных версий бросает тень на все PHP сообщество, на данный момент тот же WordPress поддерживает версии PHP 8 в бета режиме.
Конечно, есть причины, по которым новые версии PHP должным образом не поддерживаются популярными CMS. Вам решать, хорошие они или нет. Мое личное мнение заключается в том, что решение придерживаться обратной совместимости, как это делает WordPress, в основном связано с бизнесом: большая часть WordPress является коммерческой частью, и большая часть их клиентской базы использует старые версии PHP. Это порочный круг, в котором обе стороны сдерживают друг друга и, соответственно, сдерживают PHP-сообщество в целом.
С другой стороны, мы должны признать тот факт, что не многие программные проекты могут оставаться такими же популярными и актуальными, как WordPress спустя почти 20 лет, так что, может быть, их стратегия обратной совместимости является правильной?)
Поддержка транспиляции
Ну и напоследок можно пофантазировать о будущем развитии языка, например, многие функции, такие как дженерики, не могут быть реализованы в PHP, пока он поддерживает runtime-проверки типов, есть предложения сделать некое надмножество PHP с поддержкой IDE и статического анализатора. То есть этакой аналог Typescript. Вы могли слышать об этом, например тот же PXP, который может пойти в интересном для разработчиков направлении.
Что думаешь?