Вход Регистрация
ruen

Что нового в PHP 8 - улучшения и возможности, из-за которых стоит переходить на эту версию

Язык PHP за время своего существования прошел путь совершенствования, став из простого языка для построения веб-страниц мощным инструментом. PHP 8 приносит еще больше улучшений и возможностей. Проделана большая работа по оптимизации – производительность PHP 8 стала выше. Также был улучшен синтаксис, а система типов стала более надежной. Обо всем подробнее ниже.

chto-novogo-v-php-8

Что нового в PHP 8

Краткий список новшеств, на которые стоит обратить внимание:

универсальные типы (union type), позволяющие для объединенных типов заменить аннотации PHPDoc;

именованные аргументы, что означает возможность передавать только необходимые аргументы и в любом порядке, просто указывая имена аргументов;

определение свойств в конструкторе, которое позволяет использовать меньше кода как для определения, так и для инициализации свойств;

оператор nullsafe (?->), помогает избежать проверки на null. Достаточно использовать последовательность вызовов с этим оператором. Возвращается null, если один из элементов в проверяемой последовательности вернет null;

добавлены атрибуты, что означает возможность взамен аннотаций PHPDoc использовать структурные метаданные со стандартным синтаксисом PHP;

добавлено выражение match, похожее на switch, но match является выражением со строгой проверкой типов и его результат может быть возвращён. Возможно использовать только однострочные выражения;

обработка ошибок согласованности типов для встроенных функций, что позволяет таким функциям теперь выдавать ошибки в случае неправильных типов аргументов;

JIT (компиляция Just-In-Time), что позволяет ускорить PHP примерно в 3 раза. Но такой прирост может быть получен не всегда, необходимо учитывать тип веб-приложения. Без использования этого новшества, PHP 8 равен по скорости PHP 7.4;

изменения в сравнении строк и чисел. Если происходит сравнение со строкой, содержащей число, будет использовано сравнение чисел, иначе будет выполнено преобразование и строчное сравнение;

прочие улучшения в системе типов, обработке ошибок и согласованности данных (консистентности).

Улучшения в системе типов и обработке ошибок PHP 8

Рассмотрим это более детально. Сделано следующее:

появились строгие проверки типов для некоторых операторов;

подавления ошибок оператором @ для фатальных ошибок больше не происходит;

добавлен новый тип mixed;

стало возможным наследование с методами private;

тип static может быть возвращаемым;

добавлена проверка методов для абстрактных трейтов;

у магических методов появились правильные сигнатуры;

проведена переработка предупреждений движка;

теперь выводится фатальная ошибка в случае, если сигнатуры методов несовместимы;

для OpenSSL, Curl, XMLWriter, Gd, Sockets и расширения XML теперь вместо ресурсов используются непрозрачные объекты;

добавлены типы для функций Email thread.

Изменения в синтаксисе PHP 8

Синтаксис PHP 8 также был улучшен, среди таких улучшений можно выделить следующее:

стало возможным использовать запятую в конце списков параметров и в списке use замыканий, как ранее это можно было делать для массивов;

для блока catch можно не указывать переменную;

синтаксис некоторых переменных изменен;

все имена в пространстве имен теперь рассматриваются как отдельный токен;

throw теперь является выражением;

для объектов стало возможным использовать ::class.

Новые классы, функции и интерфейсы PHP 8

Эти нововведения помогут сделать работу с PHP еще более удобной и производительной:

добавлен класс Weak Map (коллекция, которая принимает объекты в качестве ключей и служит для создания кешей данных, полученных из объекта, которым не нужно существовать дольше, чем сам объект);

добавлен интерфейс Stringable (класс, реализующий метод __toString());

новая функция str_contains (определяет, содержит ли строка заданную подстроку);

str_starts_with (проверяет, начинается ли строка с заданной подстроки);

str_ends_with (проверяет, заканчивается ли строка заданной подстрокой);

fdiv (функция для деления одного числа на другое по спецификации IEEE 754);

get_debug_type (получает тип переменной для отладки);

get_resource_id (получение целочисленного идентификатора для указанного ресурса);

объектно-ориентированная функция token_get_all (выполняет разбиение переданного кода на PHP-лексемы);

новшества для DOM, новые API для обхождения и обработки.

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

Комментарии (0)
Для комментирования войдите или зарегистрируйтесь.

Последние статьи

Популярные разделы

Eqsash (Инструменты)

Приложение для Android - VK LAST USER ID, отучитель от зависимости и т.д.:
Доступно в Google Play

Amessage (Общение)

Вход в веб-версию
Приложение для Android:
Доступно в Google Play

Поделиться

Подписаться

YouTube

Книги

IT-заметки - Простым языком о самом нужном (HTML, CSS, JavaScript, PHP, базы данных, Drupal, Битрикс, SEO, домены, безопасность и другое), PDF, 500 стр.