hostprofi.ru
Подобрать хостинг
Термин·буква P

PHP 8.0

краткое определение

PHP 8.0 — мажорная версия языка PHP, выпущенная 26 ноября 2020 года. Ввела JIT-компилятор, union types, named arguments, match-выражения, nullsafe-оператор и атрибуты. Повысила производительность на CPU-интенсивных задачах до 3 раз по сравнению с PHP 7.4.

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 не работает вообще.

Другие термины