Статья также доступна на украинском (перейти к просмотру).

Содержание:
- Нововведение
- Устаревшие элементы (depricated)/операции
- Производительность
- Модули / Драйверы
- PHP 8.5 уже достукпный на хостинге FREEhost.UA
Новая версия PHP 8.5 стала одним из самых практически ориентированных обновлений за последние годы. Основной фокус сделан на улучшении производительности, упорядочении синтаксиса и упрощении повседневных задач разработчика. В релизе появились новые механизмы работы с константными выражениями, улучшенная типизация, обновленный подход к клонированию объектов, современный pipe-оператор для построения цепочек вызовов, а также реализовано WHATWG-совместимое URL-API. Кроме того, оптимизированы внутренние модули и ускорена работа FPM, Date, DOM и Standard-компонентов.
PHP 8.5 не изменяет язык радикально, но существенно облегчает написание чистого, понятного и поддерживаемого кода, а также демонстрирует ощутимый прирост производительности в реальных веб-приложениях. Это делает новейшую версию логичным и безопасным шагом для обновления на современных проектах.
Нововведение
Добавлен новый атрибут #[\NoDiscard]и связанное с ним приведение типа (пустота). Атрибут может использоваться для маркировки функций, возвращаемое значение которых является обязательным для использования. Новое приведение типа позволяет указать, что значение намеренно не применяется.
Появились новые функции для получения результатов обработки исключений и ошибок. Функции get_exception_handler() та get_error_handler() позволяют определять функции с обработчиками исключений и ошибок.
Появилась поддержка приведения типов выражений с константами.
Добавлено оператор конвейера |> (pipe). Особой новинкой PHP 8.5 стал оператор конвейерной передачи (pipe).
Он позволяет передавать результат выражения или функции (слева) в следующее действие (справа), образуя последовательную цепочку обработки данных.
Пример базового использования:
$result = " Some String "
|> trim(...)
|> strtolower(...)
|> htmlspecialchars(...);
Такая запись заменяет вложенные вызовы функций, устраняет необходимость создавать временные переменные и значительно улучшает читаемость кода.
-
Преимущества pipe-оператора:
упрощение сложных последовательностей преобразования данных; -
уменьшение вложенности и «матрешек» из функций;
-
отсутствие промежуточных переменных → меньше «мусор» в пространстве имен;
-
возможность применять последовательные преобразования внутри одного выражения,
-
в частности в match(), где это раньше было невозможно;
-
учшая совместимость с функциональным стилем программирования и подходом middleware;
-
овышение читабельности при формировании pipeline-логики в DDD, API-фильтрации,
-
обработке входных данных, подготовке запросов и т.п.
-
Pipe-оператор в PHP 8.5 – это не просто синтаксический сахар, а реальный инструмент упрощения типичных повседневных задач.
Добавлен атрибут#[\DelayedTargetValidation]. Это позволяет перенести обработку ошибок некоторых внутренних атрибутов на этап выполнения кода, ускорив этим процесс компиляции, в частности, в среде UNIX-системы.
Появилась поддержка настроек parse_url() для FTP/FTPS да SSL/TLS. Это позволяет использовать оболочку потока FTP/FTPS для подключения к URL-адресу, переименовывать файлы и отслеживать заголовки Location. Также позволяет использовать связь через SSL/TLS-сокеты для парсинга целевого URL.
Появилась новая глобальная константа с названием PHP_BUILD_PROVIDER. Константа содержит переменную с одноименным названием и используется только вместе с ней. Переменная применяется на этапе сборки для добавления контекста поставщика. Перед декларированием константы сначала должна быть установлена ??переменная с произвольным значением. В противном случае константа не декларируется.
Пример:
./newstructure + export PHP_BUILD_PROVIDER="New Value" // Встановлення змінної ./addstruct ... // Виклик скрипта make make install echo PHP_BUILD_PROVIDER; // "New Value"
Появилась новая константа с названием PHP_BUILD_DATE.Константа используется для фиксации даты и времени сборки выполняемого файла и последующего их извлечения при необходимости, например, из тела кода. Раньше это можно было сделать только с помощью функции phpinfo(), что усложняло задачу из-за необходимости дальнейшего преобразования полученных данных в нужный формат. Теперь это можно сделать напрямую.
Пример:
echo PHP_BUILD_DATE; // Nov 28 2025 16:12:00
Возникла поддержка вызовов для объектов первого класса и статических замыканий в константных выражениях. Такие выражения могут включать не только константы, но и стандартные значения параметров и свойств объектов.
Появилась поддержка обратной трассировки для роковых ошибок.
Добавлена ??поддержка clone-with для функции клонированияобъектов clone(). Она позволяет создать копию объекта и сразу изменить часть его свойств.
Это особенно полезно для классов с readonly-свойствами и в целом для подхода, основанного на неизменяемых структурах данных.
Пример использования:
Приклад використання:
class User {
public function __construct(
public readonly string $name,
public readonly int $age,
) {}
}
$updated = $user clone with { age: 35 };
Конструкция clone with:
-
поддерживает идею неизменяемости без дополнительных фабрик или builder-классов;
-
минимизирует шаблонный код в DTO и Value Object;
-
позволяет обновлять только необходимые свойства, не создавая новый конструктор;
-
делает паттерн “with-er” нативным для языка;
-
полезна при работе с конфигурациями, настройками, Entity-Снапшотами, DTO в сервисах.
Это одно из самых практичных обновлений 8.5, которое значительно упрощает работу с объектами, особенно в DDD-архитектуре.
Добавлены API, которые совместимы с WHATWG URL испецификацией RFC 3986. API используются для обработки и анализа URL-адрес.
Появилась поддержка операции final для свойств конструктора. Это позволяет маркировать свойства как окончательные.
Исправление/улучшение
Вывод AST для незамедлительно вызываемого замыкания.
Обработка _debugInfo(), возвращает ссылку на массив.
Ошибки GH-16198, 15753, 20113, 20183, 17951, 20177, 19844, 20002, 19765, 19352, 19823, 19839, 19480, 19823, 19934, 19719, 19679, 19613, 18850, 19681, 19081, 19476, 18033, 17959, 19548, 18026, 19544, 19305, 18373, 19326, 19306, 16665.
Ошибки OSS-Fuzz № 447521098, 427814452.
Ошибка hard_timeout при использовании с опцией --enable-zend-max-execution-timers.
Улучшено сообщениеоб ошибке UnhandledMatchError для значения zend.exception_string_param_max_len=0.
Элемент clone() стал функцией.
Устаревшие элементы (depricated)/операции
-
Директивы INI report_memleaks та INI disable_classes (удалена).
-
Замена $http_response_header.
-
Инкремент нечисловых строчек Girgias.
-
Все операции и трудности, связанные с привязыванием замыканий.
-
Операция повторного декларирования констант.
-
Вывод из строк запроса$_SERVER['argv'] та $_SERVER['argc'].
-
Неканонические имена integer, binary, boolean и double.
-
Использование значенияnull при вызове array_key_exists()и в качестве смещения массива.
Производительность
PHP 8.5 демонстрирует улучшение производительности по сравнению с 8.4 благодаря оптимизации ядра препроцессора, усовершенствованию работы с константными выражениями, переработанным механизмам обработки замыканий и обновленным внутренним алгоритмам FPM, Date и DOM.
По предварительным тестам, в типовых веб-приложениях прирост быстродействия составляет 5-10% в зависимости от сценария использования. Уменьшение количества временных переменных благодаря pipe-оператору также оказывает положительное влияние на работу менеджера памяти, что в высоконагруженных средах дает ощутимый выигрыш.
Также улучшена производительность:
• парсинга и обработки URL через новый WHATWG-совместимый модуль;
• работы FPM в сценариях с большим объемом логирования;
• многих внутренних операций Standard, Date, DOM через оптимизацию C-ядра.
PHP 8.5 идеально подходит для проектов, где критически важна скорость ответа,
эффективное использование ресурсов и стабильность работы под нагрузкой.
Модули / Драйверы
COM:
Исправлены вызовы методов и доступ к объектам, имеющим тип вариант.
Curl:
-
Добавленная функция curl_share_init_persistent(), которая позволяет хранить дескрипторы для запросов PHP и использовать их повторно при одинаковом наборе параметров. Это позволит избежать повторной инициализации дескрипторов при каждом запросе и соответственно оптимизировать затраты ресурсов;
-
Добавленная функция curl_multi_get_handles(), возвращающая массив с указателями на все простые дескрипторы, добавленные ранее;
-
Появилась поддержка CURLOPT_SSL_SIGNATURE_ALGORITHMS;
-
До curl_getinfo добавлена ??поддержка CURLINFO_HTTPAUTH_USED, CURLINFO_USED_PROXYдаCURLINFO_PROXYAUTH_USED;
-
До curl_getinfo() добавлена ??поддержка CURLINFO_QUEUE_TIME_T;
-
Функции curl_close() да curl_share_close() помечены как устаревшие.
Date:
-
Исправлены поведенческие невзгоды, связанные с переполнением целых чисел;
-
Исправлена ??ошибка GH-17159;
-
Исправлены функции date_sunset() и date_sunrise(), учитывающие смещение UTC на доли часа.
DOM:
-
Добавленные insertAdjacentHTML(), getElementsByClassName() та $outerHTML;
-
Налажен процесс проверки пространства имен getNamedItemNS();
-
Исправлена ??ошибка, возникающая при клонировании коллекций DOM-узлов, карт и списков;
-
Исправлена ??ошибка GH-18877.
FPM:
-
Появилась возможность установления ограничений журнала доступа FPM: с помощью log_limit;
-
Исправлены ошибки GH-8157, 17645, 19989 та 19817.
ODBC
Удалены ODBC OVER и флажки сборника, которые специфичны для драйвера.
OpenSSL:
-
Добавлен INI-файлс названием openssl.libctx, который позволяет выбирать разновидность контекста OpenSSL-библиотеки и преобразовывать части расширения для использования библиотеки libctx;
-
К функциям openssl_private_decrypt() та openssl_public_encrypt() додана опція $digest_algo;
-
Исправлена ??сборка, полученная при применении опции --with-openssl-legacy-provider;
-
Исправлены ошибки GH-19369, 19994;
-
Опция $key_length для openssl_pkey_derive() является устаревшей.
Standard
-
Появились новые функции array_first() да array_last(), возвращающие первое и, соответственно, последнее значение массива;
-
Появились поддержка секционированных файлов cookie;
-
Улучшенная работа функций html_entity_decode, array_chunk() и pack();
-
Исправлены ошибки в обработке кода команды sendmail.
URI:
Появился новый модуль, предоставляющий API для возможности проведения анализа и обработки URL по правилам, определенным в стандартах URL-адрес WHATWG URL и RFC 3986
Пример использования:
use Uri\Rfc3986\Uri
$uri = new Uri('https://example.com/news/1825/news1.php');
var_dump($uri->getHost());
// string(7) "example.com"
Для определения утилитой Rsync необходимости передачи файла стандартный подход предполагает учет времени внесения изменений в файл, а также его размер. И если одноименный файл из каталога назначения имеет одинаковые с источником значения указанных параметров, копирование не произойдет. В большинстве случаев это срабатывает верно, но не у всех. Для этого здесь может помочь применение метода сравнения контрольных сумм файлов источника и назначения. Метод включается с помощью опции --checksum, указанной в команде. Это несколько затормозит процесс копирования, поскольку будет считываться содержимое обоих файлов, но все равно такой подход может оказаться полезным в некоторых случаях.
PHP 8.5 уже доступный на хостинге FREEhost.UA
Вы можете выбрать эту версию в настройках вашего хостинг-аккаунта и протестировать. Новые возможности без дополнительной конфигурации. Мы поддерживаем самые актуальные версии PHP сразу же после появления стабильных сборок, чтобы обеспечить нашим клиентам . Максимальную производительность и безопасность. Попробовать хостинг с PHP 8.5.
Подписывайтесь на наш телеграмм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов
Смотрите наш канал Youtube на https://www.youtube.com/freehostua.
Мы в чем-то ошиблись, или что-то пропустили?
Напишите об этом в комментариях, мы с удовольствием ответим и обсудим Ваши замечания и предложения.
|
Дата: 02.12.2025 Автор: Александр Ровник
|
|

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus