[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';
}
答案 0 :(得分:1)
由于您已将错误类型的参数传递到call
方法,因此会引发错误,例如,您是这样的:
$schedule->call($this->consult());
在这里,您实际上调用了$this->consult()
方法并传递了结果;这相当于:
$methodCallResult = $this->consult();
$schedule->call($methodCallResult);
但是,此处的调用方法实际上接受Callable
或String
。如果是String
,则字符串可以是SomeClass@methodName
或SomeClass::staticMethodName
。
如果是可调用的,它可以是Closure/Anonymous Function
,也可以是[$anObject, 'someMethod']
之类的实例方法,在您的情况下可以是以下内容:
// Call the consult method of same/this class
$schedule->call([$this, 'consult']);
此外,在这种情况下,您的consult
方法应该(可能,确实不确定,因此请先尝试保护)为public
而不是protected
。