Статистика версий PHP: Январь, 2025

Источник: «PHP version stats: January, 2025»
Использование PHP в январе 2025 года. Дважды в год я пишу обновлённую информацию об использовании версий PHP в сообществе.

Предыдущий выпуск можно прочитать в статье «Статистика версий PHP: Июль, 2024», но в эту статью я также включу исторические данные.

Как всегда, я работаю с имеющимися данными: эти диаграммы не являются 100% точным представлением PHP сообщества в целом, но они точно отражают одну из наиболее заметных частей PHP — экосистему packagist.

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

Статистика использования PHP

Для начала рассмотрим процентное соотношение используемых сегодня версий PHP. Я опустил все версии, используемые не более чем на 1%:

Версия2023-072024-012024-072024-07
7.24.3%2.5%2.0%1.6%
7.34.2%3.2%1.9%1.5%
7.419.9%13.6%10.2%7.6%
8.012.3%7.2%5.4%3.4%
8.139.3%35.2%26.1%18.1%
8.217.2%29.4%32.3%28.6%
8.30.2%6.4%19.9%32.7%
8.40.0%0.0%0.0%5.1%

Визуализация этих данных выглядит так:

Эволюция использования версий PHP
Эволюция использования версий PHP

Начиная с PHP 8.1, я начал делать эти посты в январе и июле. Я намеренно выбрал эти месяцы, потому что к январю новейшему релизу PHP уже около месяца, и мне кажется интересным, сколько среди них ранних последователей. Поэтому давайте сравним использование PHP 8.1 за первый месяц:

ВерсияИспользование за первый месяц
8.19.1%
8.24.7%
8.36.4%
8.45.1%

PHP 8.4 демонстрирует не самые лучшие, но и не самые худшие результаты. Логично, что релиз PHP *.1 быстрее внедряется, так как он обычно устраняет все недостатки предыдущего релиза *.0. Я немного удивлён тем, что 8.3 занял второе место: это был довольно скучный релиз, в то время как 8.4 содержит гораздо больше интересных новых возможностей. С другой стороны, скука может быть причиной того, что люди быстрее обновляются.

Наконец, давайте соберём все данные в один большой график, начинающийся с PHP 5.3 в 2013 году:

Эволюция на протяжении времени
Эволюция на протяжении времени

Требуемые версии PHP

Помимо данных Packagist, я также использую анализатор популярных пакетов Никиты Попова, загружающий 1000 самых популярных пакетов композитора. Я использую скрипт для сканирования этих пакетов и определения их минимальной требуемой версии PHP. Вот результаты:

Версия2023-072024-012024-072025-01
5.27755
5.365585052
5.431282626
5.521161515
5.632302931
7.024242425
7.112510093101
7.2133123118123
7.356494245
7.497878081
8.0144126123128
8.1107154184194
8.294135153171
8.3044
8.40

Следует сделать два важных замечания.

  1. В таблице указана минимальная требуемая версия PHP. Это означает, что пакеты с минимальной версией PHP, например, 8.0, могут также поддерживать PHP 8.1, PHP 8.2, PHP 8.3 и PHP 8.4.
  2. Если посчитать цифры, то можно заметить, что между каждым годом есть некоторые различия. Не в каждом пакете указана корректная строка версии.

Проще всего представить эти данные в виде графика для относительного сравнения, чтобы можно было увидеть изменения с течением времени:

Минимальная требуемая версия PHP с течением времени
Минимальная требуемая версия PHP с течением времени

Похоже, что темпы внедрения новых версий PHP замедлились, хотя не стоит забывать, что это не обязательно плохо: пакеты, требующие php: ^8.0, будут автоматически поддерживать и PHP 8.4.

С другой стороны (этот аргумент я приводил уже много раз): Я считаю, что PHP сообщество только выиграет, если разработчики открытого исходного кода будут больше стремиться к обновлению новейших версий PHP. Сейчас наступило время, когда обновление стало как никогда простым благодаря таким инструментам автоматизации, как Rector; и поддержание проектов в актуальном состоянии на последней версии PHP только выигрывает (безопасность, производительность и новые возможности).

Я очень рад выходу PHP 8.4. Это один из самых значимых релизов в новейшей истории PHP, и мне нравится его использовать!

Комментарии


Дополнительные материалы

Предыдущая Статья

Кэширование аутентифицированных пользователей в Laravel

Следующая Статья

Несколько интересных вещей о @counter-style