ReactPHP get_class() ожидает, что параметр 1 будет объектом, задана строка

Я получаю этот код ошибки:

Предупреждение PHP: get_class() ожидает, что параметр 1 будет объектом, строка указана в /phalcon/vendor/clue/block-react/src/functions.php в строке 90 Неустранимая ошибка PHP: Uncaught UnexpectedValueException: Обещание отклонено с неожиданным значением типа в /phalcon/vendor/clue/block-react/src/functions.php:89 Трассировка стека:

  • 0 /phalcon/vendor/clue/block-react/src/functions.php(198): Clue \ React \ Block \ await (NULL, Object (React \ EventLoop \ StreamSelectLoop), NULL)
  • 1 /phalcon/app/tasks/RunTask.php(96): Clue \ React \ Block \ awaitAll (NULL, Object (React \ EventLoop \ StreamSelectLoop))

Я строю свои обещания с помощью следующего кода:

$promises[] = $this->getTrades($rule->id, $exchange->id)
                ->then(
                    function ($trades) use ($handleTrades) {
                        foreach ($trades as $trade) {
                            $handleTrades[] = $trade;
                        }
                    }
                );

Функция выглядит так:

private function getTrades($rule, $exchange) {
    $deferred = new React\Promise\Deferred();

    //...

    if (empty($trades->count())) {
        $deferred->reject("No trades found for rule $rule");
    } else {
        $deferred->resolve($trades);
    }

    return $deferred->promise();
}

Как мне это решить?

2 ответа

Решение

Как упоминалось выше в Furgas, мне нужно было добавить функцию обработки ошибок в обещание.

Настоящая причина Fatal error: Uncaught UnexpectedValueExceptionне предупреждение. Как вы можете видеть clue/reactphp-block Библиотека ожидает Exception в вашем reject функция. Пытаться:

$deferred->reject(new \Exception("No trades found for rule $rule"));
Другие вопросы по тегам