1. URI-расширение
* Встроенная поддержка работы с URI (URL) по стандартам RFC 3986 и WHATWG URL.
* Можно парсить, нормализовать и модифицировать URL через API расширения.
2. Оператор pipe (`|>`)
* Позволяет цепочать вызовы функций в “функциональном” стиле, передавая результат слева направо.
* Упрощает код, избавляет от вложенности и временных переменных.
3. “Clone with” — клонирование с изменением свойств
* Новый синтаксис:
clone $obj with ['prop' => $newValue]. * Упрощает паттерн “with-er” (часто используется с
readonly-классами). 4. Атрибут `#[\NoDiscard]`
* Этот атрибут предупреждает, если возвращаемое значение функции/метода не используется.
* Помогает избежать ошибок, когда важно обработать результат.
5. Замыкания и first-class callables в константных выражениях
* В PHP 8.5 можно использовать статические замыкания и callables в константах, атрибутах, значениях параметров и свойств.
* Расширяет возможности метапрограммирования.
6. Постоянные cURL share-дескрипторы
* Добавлена функция
curl_share_init_persistent(). Дескриптор может быть переиспользован между запросами, что экономит ресурсы. 7. Новые функции для массивов
*
array_first() — возвращает первый элемент массива (или null, если массив пуст). *
array_last() — возвращает последний элемент массива (или null). 8. Улучшения отладки и диагностики
* Фатальные ошибки теперь показывают backtrace (трассировку).
* Появились функции
get_error_handler() и get_exception_handler(), чтобы узнать текущие обработчики ошибок и исключений. * Новый CLI-флаг:
php --ini=diff — показывает только те INI-настройки, которые отличаются от значений по умолчанию. 9. Локализация (i18n)
* Новая функция
locale_is_right_to_left() и метод Locale::isRightToLeft() — проверка, является ли локаль “справа-налево” (например, арабский, иврит). * Новый класс
IntlListFormatter — форматирует списки в зависимости от локали (“яблоко, банан и груша” и т. д.). * Функция
grapheme_levenshtein() — вычисляет “расстояние Левенштейна” между строками с учётом грaфемных кластеров (для Unicode). 10. Другие улучшения синтаксиса и модели объектов
* Свойства, объявленные через конструктор (constructor property promotion), теперь могут быть
final. * Добавлен метод
Closure::getCurrent() — упрощает рекурсию в анонимных функциях. * Новые методы DOM:
Dom\Element::getElementsByClassName() и Dom\Element::insertAdjacentHTML(). * Атрибут
#[\DelayedTargetValidation] — позволяет подавить ошибки проверки атрибутов на этапе компиляции, если цель атрибута является некорректной. 11. Новый INI-директив
*
max_memory_limit — ограничение сверху для memory_limit. * Полезно для хостинга, контейнеров и сред с жёсткими лимитами памяти.
12. Новая константа сборки PHP
*
PHP_BUILD_DATE — содержит дату сборки PHP. ## Устаревания и несовместимости (deprecations)
* Оператор обратных кавычек (backtick), как alias для
shell_exec(), теперь устарел. * Неканоничные названия приведения типов (касты), такие как
(boolean), (integer), (double), (binary) — теперь deprecated. * Настройка
disable_classes в INI удалена. *
case-операторы, завершающиеся точкой с запятой (;) вместо двоеточия (:) — deprecated. * Кастинг float/string → int: если значение не может быть корректно представлено как int, теперь появится предупреждение.
## Влияние и зачем это