PHP текущее положение языка и ожидаемые изменения

PHP текущее положение языка и ожидаемые изменения

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

Однако многое из этого уже в прошлом. Это достойный язык, на котором вы можете писать современные, управляемые и надежные приложения.

Прежде чем углубляться в детали, рассмотрим, как PHP развивается в наши дни. Сейчас мы находимся на версии 7.4, а следующей версией, которая появится в конце 2020 года, будет PHP 8.

В конце эры 5.*, разработчики пытались сохранить последовательный годовой цикл выпуска апдейтов, и успешно справлялись с этим в течение последних четырех лет. Каждый новый релиз активно поддерживался два года, и получал еще один год “security fixes only”.

Разработкой PHP в наши дни занимается группа волонтеров, а некоторые из них даже получают плату за полный рабочий день. Существует открытая доска обсуждений, на которой идет активное общение о том, как развивается язык – посетите, изучите.

Существует два основных фреймворка для веба и несколько более мелких: Symfony (на нем, например, работает сайт Библиотеки программиста) и Laravel. Конечно, есть и Laminas, Yii, Cake, Code Igniter и т. д. – но если вы хотите знать, как выглядит современная разработка на PHP, то берите один из первых двух.

Обе платформы имеют большую экосистему пакетов и готовых продуктов. Начиная от админок, CRM, автономных пакетов, до CI и профилей, многочисленных сервисов: серверы веб-сокетов, менеджеры очередей, платежные интеграции и масса других полезностей.

Данные фреймворки предназначены для разработки. Если задача только в чистом управлении контентом, выбирайте WordPress, CraftCMS и Statamic т. к. они постоянно совершенствуются.

Один из способов измерить текущее состояние экосистемы PHP – это посмотреть на основной репозиторий для PHP. Около 25 млн загрузок в день. А вот график с количеством пакетов и версий с течением времени:

PHP текущее положение языка и ожидаемые изменения

Еще больше PHP-статистики вы найдете на Packagist.

Помимо фреймворков и CMS, в последние годы наблюдается рост асинхронных фреймворков (Swool, Amp и ReactPHP). Этот софт написан на PHP или других языках, позволяющих юзерам запускать асинхронный код.

Во времена пятой версии производительность PHP была в лучшем случае средняя. Начиная с версии 7.0, большая часть ядра была переписана, что привело к увеличению производительности в 2-3 раза. Каждый новый релиз оказывает положительное влияние на производительность, и это можно наблюдать на бенчмарках, например, здесь.

Еще одна фича, повышающая производительность – прелоадинг, позволяющая хранить скомпилированные части кода в памяти. Почитать об этой крутой штуке можно в официальной wiki.

Когда появится PHP 8, в список ускорялок добавится JIT-компилятор, который также позволит PHP войти в новые области помимо веб-разработки.

С тех пор как PHP начали использовать для крупных проектов, стали очевидны недостатки типизации, возникла необходимость в более сильной поддержке типов. Сегодня PHP по-прежнему позволяет писать полностью динамический и слабо типизированный код, но имеет более качественную систему типов. В сочетании с инструментами анализа, такими как Psalm, Phan и PHPStan, можно написать безопасный и строго типизированный код.

Возьмем, к примеру, этот фрагмент кода PHP, использующий современную систему типов:

В системе типов PHP все еще отсутствует одна важная фича: generics. Есть надежда, что они в скорости будут добавлены. В случае с типизированными массивами вам придется полагаться на docblocks, чтобы получить надлежащую поддержку IDE:

Эра 7.* сделала много хороших вещей для превращения PHP в более зрелый язык. Ниже представлены некоторые примеры.