TGViewer
METANIT.COM METANIT.COM @devnull22 · 5.82K subscribers
Post #2811 1.36K
Вышла новая подверсия языка программирования PHP - PHP 8.5. Основные изменения в PHP 8.5:

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, теперь появится предупреждение.


## Влияние и зачем это
  • ❤ 8
  • 🐳 4
  • 👍 3
More from @devnull22
  1. Mar 19, 2026Добавил в руководство по JavaScript главу про работу с датами и временем с помощью Tempora…
  2. Mar 19, 2026Роскомнадзор перестал полностью справляться с блокировками в интернете Роскомнадзор (РКН)…
  3. Mar 18, 2026Минцифры опубликовало законопроект о государственном регулировании ИИ. Закон должен начать…
  4. Mar 18, 2026Microsoft призвала разработчиков создавать ИИ-приложения в Electron на Windows 11 Microsof…
  5. Mar 18, 2026Oracle анонсировала проект Detroit, который будет развиваться в составе OpenJDK и нацелен…
  6. Mar 17, 2026Вышла новая версия платформы Java - JDK 26. JDK 26 — краткосрочная версия с поддержкой Pre…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →