Next Generation CMS - Управляйте контентом без границ!
Создавай
Развивай
Управляй
Актуальная v.1.0.0
PHP 8.5: что нового — полный обзор новых функций и примеры кода
Главная страница / 💡 Советы по PHP / Разработка / PHP 8.5: что нового — полный обзор новых функций и примеры кода

PHP 8.5: что нового — полный обзор новых функций и примеры кода

PHP 8.5 — очередное крупное обновление популярного серверного языка программирования. В новой версии появились новые возможности языка, функции для работы с массивами, современный API для URL, улучшенная диагностика ошибок, изменения в curl, OPcache и другие полезные улучшения.

PHP 8.5: кратко о главном

PHP 8.5 вышел 20 ноября 2025 года. Релиз продолжает развитие PHP в сторону более современного, удобного и выразительного языка.

Наиболее интересные изменения PHP 8.5:

  • оператор конвейера |>;
  • функции array_first() и array_last();
  • новый вариант clone() с изменением свойств;
  • атрибут #[\NoDiscard];
  • явное игнорирование возвращаемого значения через (void);
  • новый API для работы с URL;
  • улучшенная диагностика Fatal Error;
  • новые функции для работы с обработчиками ошибок;
  • улучшения расширения curl;
  • FILTER_THROW_ON_FAILURE;
  • улучшения OPcache;
  • новые возможности расширения Intl;
  • поддержка partitioned cookies;
  • новые deprecated-конструкции, которые необходимо учитывать при обновлении старых проектов.

1. Оператор конвейера |>

Одним из самых заметных нововведений PHP 8.5 стал оператор конвейера.Он позволяет последовательно передавать результат одной функции следующей функции.

Например, раньше цепочку преобразований можно было написать так:

Код:
    $result = trim(
strtolower(
strtoupper("Hello World")
)
);

В PHP 8.5 тот же код можно записать более последовательно:

Код:
  $result = "Hello World"
|> strtoupper(...)
|> strtolower(...)
|> trim(...);

Код читается слева направо: результат предыдущей операции передаётся следующей функции.

Пример с собственной функцией

Код:
  function cleanTitle(string $text): string
{
return ucfirst($text);
}

$title = " PHP 8.5 — Новые возможности ";

$title = $title
|> trim(...)
|> strtolower(...)
|> cleanTitle(...);

Оператор конвейера особенно полезен в коде, где данные проходят несколько последовательных этапов обработки.

Важно: код с оператором |> требует PHP 8.5 или новее. На PHP 8.4 и более старых версиях такой синтаксис работать не будет.

2. Функции array_first() и array_last()

В PHP 8.5 появились две небольшие, но очень удобные функции:
array_first() и array_last().

Код:
    $users = [
'admin',
'editor',
'user'
];

echo array_first($users);
// admin

echo array_last($users);
// user

Функции работают и с ассоциативными массивами:

$users = [
    'administrator' => 10,
    'editor' => 20,
    'guest' => 30
];

echo array_first($users);
// 10

echo array_last($users);
// 30

Раньше для получения первого элемента разработчики часто использовали reset(), array_key_first() или другие конструкции.Теперь код стал значительно проще.

Код:
    $first = array_first($users);
$last = array_last($users);

Если массив пустой, обе функции возвращают null.

Код:
 $items = [];
var_dump(array_first($items));
// NULL
var_dump(array_last($items));
// NULL

3. Новый clone() с изменением свойств

В PHP давно существует оператор clone(), который позволяет создать копию объекта. PHP 8.5 расширяет эту возможность функцией clone(), позволяющей сразу изменить свойства новой копии.

Код:
      class User
{
public function __construct(
public string $name,
public string $role
) {}
}
$user = new User('Иван', 'user');
$admin = clone($user, [
'role' => 'admin'
]);

Исходный объект при этом остаётся неизменным:

Код:
echo $user->role;
// user
echo $admin->role;
// admin

Такая возможность может быть полезна при работе с конфигурациями,DTO, моделями и другими объектами, которые необходимо использовать как основу для создания новых вариантов.

4. Атрибут #[\NoDiscard]

PHP 8.5 получил новый атрибут #[\NoDiscard].Он позволяет обозначить функции, возвращаемое значение которых не следует случайно игнорировать.

Код:
   #[\NoDiscard]
function createToken(): string
{
return bin2hex(random_bytes(16));
}

Такой механизм особенно интересен для библиотек и больших проектов,где важно контролировать использование возвращаемых значений.

5. Явное игнорирование результата через (void)

Если разработчик действительно хочет проигнорировать возвращаемое значение функции, это можно указать явно:

Код:
(void) createToken();

Такой код показывает другим разработчикам и инструментам анализа, что результат был проигнорирован намеренно.

6. Новый API для работы с URL

Одним из важных изменений PHP 8.5 стал новый API для работы с URI и URL.

Работа с URL особенно важна для CMS, интернет-магазинов, API, роутеров, SEO-инструментов и систем редиректов.

URL состоит из нескольких компонентов:

  • схема;
  • домен;
  • порт;
  • путь;
  • параметры запроса;
  • fragment.

Новый API ориентирован на современные стандарты обработки URI и позволяет создавать более структурированный код вместо ручной обработки URL как обычных строк.

7. Улучшенная диагностика Fatal Error

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

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

Чем подробнее stack trace, тем быстрее можно определить, где именно возникла проблема.

8. Новые функции для обработчиков ошибок

В PHP 8.5 появились функции:

Код:
get_error_handler();
get_exception_handler();

Они позволяют получить текущие пользовательские обработчики ошибок и исключений.

Например:

Код:
$oldHandler = get_error_handler();
set_error_handler(function (
int $severity,
string $message,
string $file,
int $line
) {
// Обработка ошибки
});

Такая возможность особенно полезна для библиотек и CMS, которые временно устанавливают собственные обработчики.

9. Изменения в curl

В PHP 8.5 появились новые возможности расширения curl.Среди них новые функции для работы с несколькими HTTP-соединениями и постоянными share handles.

Например, новая функция:

Код:
curl_multi_get_handles();

может быть полезна приложениям, которые одновременно выполняют большое количество HTTP-запросов.

Для CMS это актуально при работе с API новостей, погодой, переводчиками, Telegram, платёжными системами и другими внешними сервисами.

10. FILTER_THROW_ON_FAILURE

PHP 8.5 позволяет использовать FILTER_THROW_ON_FAILURE при валидации данных через filter_var().

Код:
 try {
$email = filter_var(
$_POST['email'],
FILTER_VALIDATE_EMAIL,
FILTER_THROW_ON_FAILURE
);
} catch (Throwable $e) {
echo 'Некорректный email';
}

Такой подход удобен в проектах, где обработка ошибок построена вокруг исключений.

11. Улучшения OPcache

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

Однако не стоит ожидать, что простое обновление PHP автоматически ускорит любой сайт в несколько раз.

На производительность CMS также влияют:

  • SQL-запросы;
  • индексы базы данных;
  • кеширование;
  • PHP-FPM;
  • конфигурация веб-сервера;
  • шаблоны;
  • сторонние API;
  • количество HTTP-запросов;
  • настройки OPcache.

12. Новые возможности Intl

PHP 8.5 продолжает улучшать поддержку интернационализации. В расширении Intl появились новые возможности форматирования локализованных списков.

Это особенно полезно для мультиязычных сайтов и CMS, где один и тот же контент должен корректно отображаться на разных языках.

13. Поддержка RTL-языков

В PHP 8.5 появилась функция:

Код:
 locale_is_right_to_left();

Она позволяет определить, использует ли конкретная локаль направление текста справа налево.

Это может пригодиться при создании мультиязычных CMS, поддерживающих арабский, иврит и другие RTL-языки.

14. Partitioned Cookies

PHP 8.5 получил поддержку partitioned cookies, связанных с современным механизмом CHIPS.

Это актуально для сайтов, использующих iframe, сторонние виджеты, внешние сервисы и другие сценарии, где cookie используются в стороннем контексте.

15. Улучшения атрибута #[\Override]

Атрибут #[\Override] помогает контролировать переопределение элементов классов при наследовании.

В PHP 8.5 его возможности были расширены, в том числе для свойств.

Это особенно полезно в крупных объектно-ориентированных приложениях и библиотеках.

16. Что устарело в PHP 8.5?

При обновлении нельзя обращать внимание только на новые функции. В PHP 8.5 ряд старых конструкций получил статус deprecated.

Например:

Код:
mysqli_execute()
curl_close()
curl_share_close()
socket_set_timeout()

Старый код рекомендуется постепенно переводить на современные альтернативы.

Например:

Код:
 mysqli_stmt_execute();

вместо устаревшего варианта mysqli_execute().

17. Что проверить перед переходом на PHP 8.5

Если проект уже работает несколько лет, обновлять PHP сразу на рабочем сервере не рекомендуется.

1. Создайте резервную копию

  • файлов сайта;
  • базы данных;
  • конфигурации PHP;
  • конфигурации веб-сервера.

2. Проверьте Composer

composer outdated
composer check-platform-reqs

3. Найдите deprecated-функции

grep -R "mysqli_execute" .
grep -R "curl_close" .
grep -R "curl_share_close" .

4. Проверьте плагины

Особое внимание необходимо уделить сторонним расширениям, старым библиотекам и самописным модулям.

5. Используйте тестовую копию сайта

Оптимальный вариант:

Код:
копия сайта
+
копия базы данных
+
PHP 8.5
+
тестирование

18. PHP 8.5 и NGCMS

Для CMS вроде NGCMS переход на PHP 8.5 особенно интересен благодаря сочетанию новых возможностей языка и улучшенной диагностики ошибок.

Например, получение первого элемента массива теперь можно записать намного проще:

Код:
 $first = array_first($items);

Для последовательной обработки данных можно использовать оператор конвейера:

Код:
 $data
|> trim(...)
|> strtolower(...)
|> htmlspecialchars(...);

А при необходимости создания изменённой копии объекта:

Код:
 $copy = clone($config, [
'debug' => true
]);

Улучшенная диагностика Fatal Error также может значительно упростить поиск проблем внутри движка CMS и плагинов.

Совет:не стоит переписывать весь существующий код только ради новых возможностей PHP 8.5. Лучше использовать их постепенно, по мере модернизации отдельных компонентов.

19. PHP 8.5: что действительно стоит запомнить

ВозможностьДля чего нужна
|>
Последовательная обработка данных
array_first()
Получение первого элемента массива
array_last()
Получение последнего элемента массива
clone()
Клонирование объекта с изменением свойств
#[\NoDiscard]
Контроль использования возвращаемого значения
(void)
Явное игнорирование результата
URI APIСовременная работа с URL
Fatal Error stack traceБолее удобная диагностика ошибок
get_error_handler()
Получение текущего обработчика ошибок
get_exception_handler()
Получение текущего обработчика исключений
FILTER_THROW_ON_FAILURE
Валидация данных через исключения
Intl
Улучшенная интернационализация
Partitioned CookiesСовременная работа с cookie

20. Стоит ли переходить на PHP 8.5?

Для новых проектов PHP 8.5 является интересным выбором, если используемые библиотеки, CMS и расширения его поддерживают.

Для существующих проектов переход также имеет смысл, но делать его лучше постепенно.

Особенно внимательно необходимо проверять старые CMS, плагины, самописные библиотеки и проекты с большим количеством устаревшего кода.

Оптимальная схема обновления выглядит так:

  1. создать резервную копию;
  2. поднять тестовую копию сайта;
  3. установить PHP 8.5;
  4. включить подробное логирование;
  5. исправить deprecated и ошибки совместимости;
  6. протестировать CMS и плагины;
  7. проверить базу данных и внешние API;
  8. после успешного тестирования обновить production-сервер.

Заключение

PHP 8.5 — это не просто небольшое обновление с несколькими новыми функциями. Версия продолжает развитие языка и делает современный PHP более удобным для разработки крупных проектов.

Наиболее интересными нововведениями стали оператор конвейера |>, функции array_first() и array_last(), новый clone(), атрибут #[\NoDiscard], современный API для URL и улучшенная диагностика фатальных ошибок.

Для разработчиков CMS особенно важны новые возможности работы с массивами, URL, HTTP-запросами, ошибками, интернационализацией и cookie.

При этом переход на PHP 8.5 нельзя сводить к простой смене версии PHP на сервере. Перед обновлением необходимо проверить deprecated-функции, плагины, библиотеки, Composer-зависимости и конфигурацию сервера.

Если проект уже работает на PHP 8.3 или PHP 8.4 и находится в активной разработке, PHP 8.5 является логичным следующим шагом. Для старых проектов лучше сначала создать тестовую копию и только после успешного тестирования обновлять рабочий сервер.

PHP продолжает развиваться в сторону более выразительного, современного и удобного языка, а PHP 8.5 является ещё одним заметным шагом в этом направлении.

Полезные материалы




Добавить комментарий


Настройка CRON для NGCMS (на п...

04 Sep 2026 , admin
Плагин nsched (и ряд других задач движка &mda...

PHP 8.5: что нового — полный о...

01 Sep 2026 , admin
PHP 8.5 — очередное крупное обновлен...

Изменение фона выделенного тек...

21 Aug 2026 , admin
Многим не нравится выделение текста на страни...

Шаблоны

Шаблон админ-панели Old2

Шаблон админ-панели Old2

Шаблон админ-панели Old2, одна из моих старых попыток адаптации старой админки на новый лад, вот подумал чего добру пропадать , адаптировал до последней версии
Шаблон админ-панели Oniks

Шаблон админ-панели Oniks

Один из старых скинов админки от Русика , адаптирован под последнею версию движка .
Шаблон Android Dev

Шаблон Android Dev

Данный шаблон выполнен с преобладанием зелёного и белого цветов. Это подсознательно подчёркивает тему мобильных устройств на платформе андроид. Сам по себе, шаблон Android Dev очень лёгкий и быстрый п...
Шаблон админ-панели Velonic

Шаблон админ-панели Velonic

Шаблон полностью адаптивный, настраивается на свой вкус и цвет.
Шаблон Travel Hour

Шаблон Travel Hour

Travel Hour - красивое и замечательное решение для создания туристического сайта, сайта о курортах и турах, сайта об отдыхе. Шаблон полностью адаптивный, прекрасно отображается на планшетах и смартфон...
Русский English Deutsch Français Español Українська Қазақша
up