Вышел PHP 8.5

20 ноября 2025 года состоялся релиз языка программирования PHP 8.5, включая сборки для ОС Windows. В ветку добавлены обновления, а также серия изменений, которые нарушают совместимость с предыдущими версиями. Предыдущая стабильная ветка вышла в ноябре 2024 года. Выпуск PHP 8.0 произошёл в ноябре 2020 года.

По информации OpenNET, основные изменения и доработки в PHP 8.5:

добавлен оператор «|>» (pipe), позволяющий передавать значения от одной функции к другой без использования промежуточных присвоений и переменных, используя результат выполнения одной функции в качестве параметра в другой. Если функция имеет один аргумент, параметр для передачи значения выбирается через указание «…», а если у функции несколько аргументов подстановка осуществляется при помощи замыканий.

предоставлена поддержка присвоения новых значений клонированным объектам во время их клонирования, через передачу в функцию clone() ассоциативного массива.

добавлен атрибут «#[NoDiscard]», который может применяться для пометки функций, возвращаемые значения от которых всегда должны использоваться. Если возвращаемое подобной функцией значение игнорируется интерпретатор выведет предупреждение. Для обхода проверки можно использовать вызов с приведением к типу void.

разрешено использование замыканий (closures) и вызываемых объектов первого класса (first-class callables) в константных выражениях, в которых ранее допускалось указание неизменяемых значений, вычисляемых во время компиляции. Например, теперь можно указывать замыкания в атрибутах, значениях по умолчанию и константах. Используемые подобным образом замыкания всегда должны помечаться ключевым словом «static» и не могут обращаться в внешним переменным при помощи выражения «use».

при выводе фатальных ошибок к тексту сообщения теперь прикрепляется обратная трассировка (backtrace) вызовов.

добавлены функции array_first() и array_last(), выводящие первый и последний элементы массива.

добавлен модуль URI, прелоставляющий упрощённый API для разбора ссылок. Разбор осуществляется при помощи библиотек uriparser и lexbor.

реализован атрибут «#[DelayedTargetValidation]», при помощи которого можно перенести проверку атрибутов, таких как «#[Override]», со стадии компиляции на стадию выполнения.

добавлены функции get_error_handler() и get_exception_handler() для определения функций с обработчиками ошибок и исключений.

в модуле Curl реализована функция curl_share_init_persistent(), позволяющая совместно использовать дескрипторы при обработке разных запросов.

в модуле Exif добавлена поддержка изображений в форматах HEIF и HEIC.

объявлены устаревшими: нестандартный синтаксис приведения имён типов (например, «(integer)», а не «(int)»); использование обратных кавычек (`) для вызова команд вместо shell_exec(); повторные объявления констант; использование точки с запятой вместо двоеточия для завершения операторов case; указание null вместо пустой строки массивах или в функции array_key_exists(). Из ini-файла удалена поддержка настройки «disabled_classes».

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии