Что нового в PHP 8 - улучшения и возможности, из-за которых стоит переходить на эту версию
Язык PHP за время своего существования прошел путь совершенствования, став из простого языка для построения веб-страниц мощным инструментом. PHP 8 приносит еще больше улучшений и возможностей. Проделана большая работа по оптимизации – производительность 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 – это позволит увеличить производительность, безопасность и удобство при разработке проекта.
Последние статьи
- 03.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 3. Все операторы PHP с примерами, с выводом работы кода на экран.
- 02.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 2. Типы данных в PHP с примерами.
- 02.04.24ИТ / Уроки PHP Уроки простыми словами. Урок 1. Коротко о языке веб-программирования PHP. Основы синтаксиса.
- 09.11.23ИТ / Базы данных Ошибки при переходе с MySQL 5.6 на 5.7 и как их исправить - импорт дампа БД завершился ошибкой или не работает INSERT. Отключение строгого режима STRICT_TRANS_TABLES или использование IGNORE
- 08.07.22ИТ / Разное Конвертация офисных файлов DOC, DOCX, DOCM, RTF в форматы DOCX, DOCM, DOC, RTF, PDF, HTML, XML, TXT без потерь и изменения разметки