ReactPHP get_class()期望参数1为对象,给定字符串

时间:2018-07-24 12:17:01

标签: php reactphp

我收到此错误代码:

  

PHP警告:get_class()期望参数1为对象,字符串   在第90行的/phalcon/vendor/clue/block-react/src/functions.php中给出   PHP致命错误:未捕获UnexpectedValueException:承诺被拒绝   具有意外的输入值   /phalcon/vendor/clue/block-react/src/functions.php:89堆栈跟踪:

     
      
  • 0 /phalcon/vendor/clue/block-react/src/functions.php(198):线索\反应\块\等待(NULL,对象(反应\ EventLoop \ StreamSelectLoop),   NULL)
  •   
  • 1 /phalcon/app/tasks/RunTask.php(96):线索\反应\块\ awaitAll(NULL,对象(反应\ 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 个答案:

答案 0 :(得分:1)

真正的原因是Fatal error: Uncaught UnexpectedValueException,而不是警告。由于you can see clue/reactphp-block库在Exception函数中期望有reject。试试:

$deferred->reject(new \Exception("No trades found for rule $rule"));

答案 1 :(得分:0)

正如上面提到的Furgas所述,我需要在promise中添加错误处理功能。