PHP 8.4: что нового и дата выхода
Введение
PHP — это проект с открытым исходным кодом. Чтобы узнать, что происходит с PHP 8.4, потребуется пара минут изучения. Например, на этой странице перечислены принятые RFC для PHP, включая PHP 8.4.
Когда выйдет PHP 8.4
PHP 8.4 вышел , согласно списку задач подготовки. 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