嗨我有点新的laravel和PHP我有这个错误[InvalidArgumentException]

时间:2017-02-08 19:42:58

标签: php database laravel laravel-5.4

[InvalidArgumentException]无效的预定回调事件。必须是字符串或可调用的。 这是代码

protected function schedule(Schedule $schedule)
{
    // $schedule->command('inspire')
    //          ->hourly();
   $schedule->call($this->consult());
}

/**
 * Register the Closure based commands for the application.
 *
 * @return void
 */
protected function consult()
{//try {
    $url=DB::table('remote_services')->pluck('url');
   foreach ($url as $url){
       echo $url;
       echo  '   ';}
//}catch (InvalidArgumentException $e ){
  //  echo 'captured exception';
}

1 个答案:

答案 0 :(得分:1)

由于您已将错误类型的参数传递到call方法,因此会引发错误,例如,您是这样的:

$schedule->call($this->consult());

在这里,您实际上调用了$this->consult()方法并传递了结果;这相当于:

$methodCallResult = $this->consult();
$schedule->call($methodCallResult);

但是,此处的调用方法实际上接受CallableString。如果是String,则字符串可以是SomeClass@methodNameSomeClass::staticMethodName

如果是可调用的,它可以是Closure/Anonymous Function,也可以是[$anObject, 'someMethod']之类的实例方法,在您的情况下可以是以下内容:

// Call the consult method of same/this class
$schedule->call([$this, 'consult']);

此外,在这种情况下,您的consult方法应该(可能,确实不确定,因此请先尝试保护)public而不是protected