PHP 8.4: round() — неправильные режимы вызывают исключения

Источник: «PHP 8.4: round() - Invalid rounding modes throw \ValueError exceptions»
Функция round() округляет значение float до ближайшего целого числа или десятичного значения заданной точности. Она поддерживает тонкую настройку метода округления с помощью дополнительного параметра.

До версии PHP 8.4 при передаче неверного параметра режима округления по умолчанию использовался режим округления PHP_ROUND_HALF_UP. В PHP 8.4 и более поздних версиях передача неверного режима округления приводит к исключению \ValueError и больше не используется значение PHP_ROUND_HALF_UP.

round(num: 3.14, mode: 42); // Неправильный параметр $mode

ValueError: round(): Argument #3 ($mode) must be a valid rounding mode (PHP_ROUND_*).

Влияние на обратную совместимость

Передача некорректного параметра $mode в функцию round() приводит к вызову исключения ValueError в PHP 8.4 и более поздних версиях. Это сделано для того, для исправления возможного неожиданного поведения предыдущих версий PHP, предполагавших режим округления PHP_ROUND_HALF_UP по умолчанию для неверных значений.

PHP-код, не передающий параметр $mode в вызовы функции round вообще или передающий корректные значения параметров (константы PHP_ROUND_*), не получит никаких изменений в функциональности. Любые PHP-приложения, получающие исключения, могут спокойно отказаться от дополнительного параметра, чтобы имитировать существующее поведение, не вызывая исключений.

-round(num: 3.14, mode: 42);
+round(num: 3.14);

Связанные изменения


Дополнительные материалы

Предыдущая Статья

PHP 8.4: Opcache: Изменения в INI, влияющие на включение JIT

Следующая Статья

PHP 8.4: Curl: Константа CURLOPT_BINARYTRANSFER устарела