PHP 8.5 был официально выпущен 20 ноября 2025 года.
Главные новшества - это улучшения синтаксиса, новые API, удобства для разработчиков, а также улучшения в области отладки и совместимости.
Ключевые обновления и примеры
URI-расширение
Теперь PHP имеет встроенное расширение для работы с URI/URL. Оно позволяет надёжно парсить, нормализовать и модифицировать URL в соответствии со стандартами RFC 3986 и WHATWG URL.
use Uri\Rfc3986\Uri;
$uri = new Uri('https://php.net/releases/8.5/en.php');
echo $uri->getHost(); // php.netЭто даёт более надёжный и современный способ работы с URL по сравнению с устаревшим parse_url()
Оператор Pipe (|>)
Введён новый оператор |>, который позволяет "протягивать" результат одного вызова в следующий. Как в функциональном стиле слева-направо, читаемо и без лишних временных переменных.
$title = ' PHP 8.5 Released ';
$slug = $title
|> trim(...)
|> (fn($str) => str_replace(' ', '-', $str))
|> (fn($str) => str_replace('.', '', $str))
|> strtolower(...);
var_dump($slug);
// string(15) "php-85-released"Такой подход особенно удобен, когда нужно последовательно применять несколько преобразований к данным.
Clone-with: клонирование с изменением свойств
Теперь возможно клонировать объект и одновременно менять некоторые его свойства с помощью новой формы clone(). Это удобно, например, для readonly классов.
readonly class Color
{
public function __construct(
public int $red,
public int $green,
public int $blue,
public int $alpha = 255,
) {}
}
$blue = new Color(79, 91, 147);
$transparentBlue = clone($blue, ['alpha' => 128]);Раньше приходилось вручную создавать новый объект. Cейчас это стало гораздо проще и чище.
Новый атрибут #[\NoDiscard]
Добавив атрибут #[\NoDiscard] к функции, PHP теперь может предупреждать, если её возвращаемое значение было проигнорировано. Это помогает избежать ошибок, когда важно использовать результат.
#[\NoDiscard]
function getPhpVersion(): string
{
return 'PHP 8.5';
}
getPhpVersion(); // ⚠️ Warning: The return value of function getPhpVersion() should be usedЕсли ты намеренно игнорируешь возвращаемое значение, можно добавить приведение к (void) . Тогда предупреждения не будет.
Дополнительные улучшения
Помимо крупных нововведений, PHP 8.5 содержит и множество мелких, но полезных улучшений:
Возможность использовать замыкания (closures) и first-class callable в константных выражениях, например, как параметры атрибутов.
Поддержка постоянных cURL share-дескрипторов - дескрипторы могут сохраняться между разными запросами PHP, что экономит ресурсы при повторных запросах к одним и тем же хостам.
Новые функции:
array_first(),array_last()- для лёгкого получения первого и последнего элемента массива.Функция для работы с RTL-локалями:
locale_is_right_to_left()иLocale::isRightToLeft()- удобно для приложений, поддерживающих языки с письмом справа-налево.Команда CLI
php --ini=diff- показывает только те INI-настройки, которые отличаются от значений по умолчанию. Это облегчает аудит конфигурации.Добавлены функции
get_error_handler()иget_exception_handler()для получения текущих установленных обработчиков ошибок и исключений.Теперь fatal-ошибки содержат backtrace (стек вызовов) - это облегчает отладку критических сбоев.
Новый констант
PHP_BUILD_DATEполезен для логов, диагностики и отслеживания, когда и как была собрана версия PHP.
Обратная совместимость и устаревшие возможности
При обновлении на PHP 8.5 стоит учитывать и удалённые/устаревшие функции:
Псевдоним обратного апострофа (
`) дляshell_exec()больше не поддерживаются и нужно использовать явныйshell_exec().Устарели неканонические имена типов
(boolean),(integer),(double),(binary)- вместо них нужно использовать(bool),(int),(float),(string).Удалена настройка
disable_classes, так как она приводила к проблемам в движке.Операторы
caseбольше нельзя завершать точкой с запятой вместо двоеточия.Использование
nullв качестве смещения массива или вarray_key_exists()теперь объявлено устаревшим.
Если вы переходите с более старых версий рекомендуется внимательно изучить раздел миграции, чтобы избежать проблем.
Почему это важно
Обновление до PHP 8.5 приносит не просто новые "плюшки", а значительные улучшения для разработчиков:
Более чистый, читаемый и современный синтаксис (pipe-оператор, clone-with, first-class callable) сокращает boilerplate и упрощает код.
Новые утилиты (URI-парсинг, array_helpers, locale-функции) экономят время и снижают вероятность ошибок.
Улучшения для отладки и устойчивости (backtrace при fatal, управление ошибками, стабильные cURL-дескрипторы) повышают надёжность приложений.
Общая модернизация и упрощение - PHP становится удобнее для написания чистого, безопасного и поддерживаемого кода.