PHP 8.4: что нового и дата выхода
Введение
PHP — это проект с открытым исходным кодом. Чтобы узнать, что происходит с PHP 8.4, потребуется пара минут изучения. Например, на этой странице перечислены принятые RFC для PHP, включая PHP 8.4.
Когда выйдет PHP 8.4
PHP 8.4 выйдет 21 ноября 2024 года, согласно списку задач подготовки. PHP 8.4 будет протестирован через три альфа-релиза, три бета-релиза и шесть релиз-кандидатов.
Дата релиза | Релиз PHP 8.4 |
---|---|
6 Июня 2024 г. | Первый альфа-релиз / Alpha 1 |
20 Июня 2024 г. | Второй альфа-релиз / Alpha 2 |
4 Июля 2024 г. | Третий альфа-релиз / Alpha 3 |
16 Июля 2024 г. | Заморозка фич / Feature freeze |
18 Июля 2024 г. | Первый бета-релиз / Beta 1 |
1 Августа 2024 г. | Второй бета-релиз / Beta 2 |
15 Августа 2024 г. | Третий бета-релиз / Beta 3 |
19 Августа 2024 г. | Первый релиз кандидат /RC 1 |
12 Сентября 2024 г. | Второй релиз кандидат / RC 2 |
26 Сентября 2024 г. | Третий релиз кандидат / RC 3 |
10 Октября 2024 г. | Четвёртый релиз кандидат / RC 4 |
24 Октября 2024 г. | Пятый релиз кандидат / RC 5 |
7 Ноября 2024 г. | Шестой релиз кандидат / RC 6 |
21 Ноября 2024 г. | Общедоступный релиз / GA |
Что нового в PHP 8.4
Расширение DOM в PHP 8.4 теперь поддерживает HTML5
Расширение DOM в PHP 8.4 только что получило обновление с поддержкой парсинга и сериализации HTML5. Это означает, что больше не будет головной боли при работе с тегами, специфичными для HTML5, или при встраивании HTML в JavaScript.
Используйте новый класс DOM\HTMLDocument
, и HTML5-контент будет обрабатываться правильно, в соответствии с современными веб-стандартами.
Вот как создать HTML-документ из строки:
use DOM\HTMLDocument;
$htmlDocument = HTMLDocument::createFromString('<!DOCTYPE html><html><body>Hello, HTML5!</body></html>');
Или из файла
use DOM\HTMLDocument;
$htmlDocument = HTMLDocument::createFromFile('path/to/your/file.html');
Узнайте больше: PHP RFC: DOM HTML5 parsing and serialization
PHP 8.4 по умолчанию поставляется с увеличенной стоимостью bcrypt
В PHP 8.4 стоимость bcrypt по умолчанию увеличена до 12. Что это означает?
bcrypt — функция хэширования паролей, используемая PHP. Эта функция защищает от хакеров, пытающихся взломать пароли.
Силу защиты можно регулировать. Чем выше значение или "стоимость", тем сильнее защита. bcrypt — это адаптивная функция: со временем количество итераций может быть увеличено, чтобы сделать функцию медленнее и защищённее к атакам перебора даже при увеличении вычислительной мощности
.
Это важно, потому что увеличение стоимости bcrypt делает хеширование паролей медленнее.
Узнайте больше: PHP RFC: Increasing the default BCrypt cost
PHP 8.4 может надёжнее разбирать большие XML-документы
Это изменение устранило проблему в PHP-расширении ext/xml
, связанную с обработкой больших XML-документов.
Противоречивые модификации в libxml2 2.7.0 непреднамеренно нарушали парсинг больших документов при использовании функций xml_parse()
и xml_parse_into_struct()
, что приводило к ошибке парсинга.
В PHP 8.4 появилась новая опция парсера для правильной обработки больших XML-документов и предотвращения ошибки парсинга, позволяя разработчикам разбирать большие XML-документы, не прибегая к сложным обходным путям.
Узнайте больше: PHP RFC: XML_OPTION_PARSE_HUGE
Новые функции обрезки многобайтовых символов в PHP 8.4
Расширение mbstring в PHP 8.4 теперь включает три новые функции: mb_trim()
, mb_ltrim()
и mb_rtrim()
. Это дополнение упрощает обрезку строк с многобайтовыми символами, улучшая предыдущее решение, заключающееся в использовании regex с preg_replace()
.
Новые функции обрабатывают пробельные и другие многобайтовые символы безопасным способом. Поведение по умолчанию удаляет предопределённый набор символов, включающий пробельные символы, в том числе и те, которые не попадают в диапазон \s
в регулярных выражениях.
Вот функции в PHP 8.4 и поведение по умолчанию:
mb_trim($string, $characters)
: Обрезает символы с обоих концов строки.mb_ltrim($string, $characters)
: Обрезает символы с начала (левой стороны) строки.mb_rtrim($string, $characters)
: Обрезает символы с конца (правой стороны) строки.
Узнайте больше: PHP RFC: Multibyte for trim function mb_trim, mb_ltrim and mb_rtrim