PHP 8.0 — мажорный релиз PHP, вышедший 26 ноября 2020 года. Стал крупнейшим обновлением языка с PHP 7.0 (2015). JIT (Just-In-Time) компилятор — самое ожидаемое нововведение — компилирует PHP-код в машинный при первом исполнении, минуя дальнейшую интерпретацию.
Ключевые нововведения
- JIT (Just-In-Time компилятор) — компиляция в машинный код. Даёт заметный прирост на математических вычислениях, меньший эффект для веб-запросов (ввод-вывод обычно является узким местом).
- Named arguments — вызов функции по именам параметров:
htmlspecialchars(string: $str, flags: ENT_QUOTES). - Union types — тип параметра может быть одним из:
function foo(int|string $param). - Match expression — улучшенный switch с возвратом значения и строгим сравнением.
- Nullsafe operator (?->) —
$user?->getAddress()?->cityвместо цепочек if (!is_null). - Attributes — нативные аннотации вместо docblock-комментариев.
Совместимость
PHP 8.0 содержит ряд несовместимых изменений (Backward-Incompatible): удалены deprecated-функции из PHP 7.x, изменилось поведение при сравнении строк и чисел, строгая типизация по умолчанию в большем числе ситуаций. Мажорные CMS — WordPress 5.6+, Laravel 8+ — поддерживают PHP 8.0.
История PHP 8.x
- PHP 8.0 — 26 ноября 2020 (EOL: 26 ноября 2023)
- PHP 8.1 — 25 ноября 2021 (Fibers, enum, read-only properties)
- PHP 8.2 — 8 декабря 2022 (readonly classes, null/false types)
- PHP 8.3 — 23 ноября 2023 (typed class constants, json_validate)
Связь с хостингом
PHP 8.0 достиг EOL в ноябре 2023 года — обновление до PHP 8.2+ обязательно. На виртуальном хостинге с cPanel или Plesk смена версии PHP происходит в один клик. На VDS с PHP-FPM возможно параллельное использование нескольких версий PHP для разных сайтов через отдельные пулы.
PHP 8.0 vs PHP 7.x
PHP 8.0 (ноябрь 2020) -- major release с breaking changes. Ключевые нововведения: JIT-компилятор (Just-In-Time) ускоряет CPU-интенсивные задачи на 10--50%, Named arguments (strlen(string: 'hello')), Union Types (int|string), Match expression, Constructor property promotion, Nullsafe operator (?->). Совместимость с PHP 7.x: некоторые deprecated-функции удалены (ereg, create_function), изменена обработка ошибок. WordPress 5.6+ требует PHP 7.4+, WordPress 6.x рекомендует PHP 8.0+. Скорость PHP 8.0 vs 7.4: в тестах Symfony 20% быстрее, Laravel 15--25% быстрее.
История PHP 8.x
PHP 8.0 вышел в ноябре 2020 года (EOL ноябрь 2023). PHP 8.1 (ноябрь 2021) добавил Enums, Fibers (корутины), readonly properties. PHP 8.2 (декабрь 2022) -- readonly классы, Disjunctive Normal Form Types. PHP 8.3 (ноябрь 2023) -- типизированные константы классов, json_validate(). Каждый minor release содержит улучшения производительности на 5--10%. Хостинг PHP должен поддерживать актуальные версии 8.x для производительности и безопасности. PHP-FPM 8.x работает значительно эффективнее предыдущих версий с включённым OPcache.
Типичные ошибки при переходе на PHP 8.0
Первая ошибка -- не проверить совместимость плагинов WordPress и расширений до обновления. Используйте PHP Compatibility Checker перед обновлением. Вторая -- игнорирование изменений в обработке ошибок: PHP 8.0 выбрасывает TypeError вместо Notice для некорректных типов. Третья -- не тестировать JIT: JIT в PHP 8.0 включён в opcache.ini, но для большинства веб-приложений выигрыш минимален (JIT помогает CPU-bound коду, веб-запросы чаще I/O-bound). OPcache с PHP 8.0+ обязателен -- без него JIT не работает вообще.