Почему php decimal-ext вызывает исключение для неправильного типа возвращаемого значения метода compareTo? - PullRequest
1 голос
/ 26 марта 2020

Я установил расширение decimal-ext и пакет php -decimal / laravel composer. Я использую его для сравнения больших десятичных чисел. На моем ноутбуке все работает правильно, но на моем промежуточном сервере выдается следующая ошибка:

Return value of Decimal\Decimal::compareTo() must be of the type int, none returned

и вот код:

(new Decimal($value))->compareTo($maxNumber) == -1;

Как я уже сказал Я не получаю эту ошибку на своем ноутбуке.

Laravel: 5.8 PHP: 7.4.3 Сервер: Ubuntu 18.04

1 Ответ

1 голос
/ 26 марта 2020

Я потратил некоторое время на это, но понял это. Расширение decimal-ext не было загружено в файл php .ini сервера. Php не выдавал исключение об отсутствующем расширении, но о неправильном типе возвращаемого значения, потому что класс Decimal был фактически загружен (он был установлен через composer). Я мог бы создать экземпляр, но реализация отсутствовала:

/**
 * Ordering
 *
 * This method is equivalent to the `<=>` operator.
 *
 * @param mixed $other
 *
 * @return int  0 if this decimal is considered is equal to $other,
 *             -1 if this decimal should be placed before $other,
 *              1 if this decimal should be placed after $other.
 */
 public function compareTo($other): int {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...