Site icon ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Четверг, 20 ноября, 2025

В PHP 8.5 появились расширение URI, оператор конвейера и улучшенный синтаксис

В PHP 8.5 появились расширение URI, оператор конвейера и улучшенный синтаксис

PHP, серверный язык программирования, используемый в основном для создания динамических веб-сайтов и веб-приложений, только что выпустил версию 8.5 — крупное обновление, в котором добавлен новый синтаксис, расширена поддержка атрибутов, улучшена производительность и реализованы многочисленные функции, соответствующие RFC.

Одним из наиболее значимых дополнений является новое встроенное расширение URI. Оно предоставляет согласованный API для анализа и изменения URL-адресов в соответствии со стандартами RFC 3986 и WHATWG URL. При поддержке uriparser и Lexbor оно заменяет parse_url() в сценариях, где требуется точная обработка в соответствии со стандартами.

Ещё одним важным нововведением в этой версии является оператор конвейера (|>), который позволяет объединять функции в цепочку слева направо. Это устраняет необходимость в глубоко вложенных вызовах функций, что упрощает чтение и поддержку конвейеров преобразований. Значения передаются напрямую через вызываемые объекты, включая стрелочные функции и частичные приложения, такие как trim(...).

В PHP 8.5 также улучшена обработка объектов с помощью синтаксиса clone-with. Теперь разработчики могут обновлять выбранные свойства при клонировании объекта с помощью clone($obj, ['prop' => value]), что упрощает шаблон «with-er» и позволяет использовать его в классах только для чтения без лишних действий.

Ещё одно дополнение — атрибут #[\NoDiscard], который выдаёт предупреждение, если возвращаемое значение функции игнорируется непреднамеренно. Это помогает выявлять ошибки в API, где возвращаемое значение необходимо для корректной работы, а (void) используется, когда разработчик явно решает его проигнорировать.

Язык также расширяет поддержку выражений времени компиляции. Статические замыкания и первоклассные вызываемые объекты теперь разрешены в константных выражениях, что позволяет использовать их в аргументах атрибутов, значениях свойств по умолчанию и константах классов.

Улучшения, связанные с производительностью, включают в себя постоянные дескрипторы общего доступа cURL. С curl_share_init_persistent() дескрипторы общего доступа сохраняются между запросами и повторно используют ранее инициализированные данные подключения, что снижает нагрузку при повторных сетевых операциях для долго работающих приложений.

Две новые вспомогательные функции, array_first() и array_last(), упрощают обработку распространённых случаев. Обе функции возвращают null для пустых массивов, что упрощает композицию с оператором объединения с null и избавляет от необходимости вручную проверять ключи.

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

Свойства можно пометить как final с помощью повышения статуса свойств конструктора. PHP также добавляет новые методы DOM, такие как getElementsByClassName() и insertAdjacentHTML(), а также новые служебные функции, например grapheme_levenshtein().

Наконец, в PHP 8.5 были внесены следующие изменения: удалены неканонические имена приведения типов, оператор обратного апострофа больше не является псевдонимом для shell_exec(), добавлены предупреждения о недопустимом приведении типов float к int и ограничения на использование null в качестве смещения массива. Старые методы сериализации __sleep() и __wakeup() теперь считаются устаревшими и заменяются на __serialize() и __unserialize().

Дополнительную информацию обо всех изменениях в PHP 8.5 можно найти в официальном объявлении о выпуске: https://www.php.net/releases/8.5/en.php или на этой странице: https://php.watch/versions/8.5.

Exit mobile version