PHP 4155 ~ 5 мин.

PHP в 2023 году

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, который может пойти в интересном для разработчиков направлении.


Что думаешь?

Категории
  • PHP 66
  • Заметки 15
  • Безопасность 3
  • Флуд 2
  • Nginx 2
  • ИТ новости 2
  • Видео 1
  • Docker 1
  • Roadmap 1
  • Архитектура 0

Хочешь поддержать сайт?

Делаем из мухи слона

sergeymukhin.com

персональный блог о веб-разработке от Сергея Мухина. Блог был основан в 2018 году, и собирался уделять основное внимание последним тенденциям, учебным пособиям, а также советам и рекомендациям, позволяющим начинающим девелоперам встать быстрее на правильную дорогу веб разработки, но что-то пошло не так 😃

Релизы PHP 8.4

Дата Релиз
8 Июня 2024 Альфа 1
20 Июня 2024 Альфа 2
04 Июля 2024 Альфа 3
16 Июля 2024 Feature freeze
18 Июля 2024 Бета 1
01 Августа 2024 Бета 2
15 Августа 2024 Бета 3
29 Августа 2024 RC 1
12 Сентября 2024 RC 2
26 Сентября 2024 RC 3
10 Октября 2024 RC 4
24 Октября 2024 RC 5
07 Ноября 2024 RC 6
21 Ноября 2024 GA

Что нового?