2017-02-08 7 views
-2

[InvalidArgumentException] Неправильное запланированное событие обратного вызова. Должна быть строка или вызываемая. это кодhi im немного новое в laravel и php, я получил эту ошибку [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

Вы предоставили номера строк с вашей ошибкой, а также трассировку стека. Оба были бы невероятно полезны в том, чтобы помочь отлаживать ваш код. – Bytewave

ответ

1

выбрасывается ошибка, потому что вы прошли неправильный тип параметра в метод call, к примеру, у Вас есть это:

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

Вот, вы, фактически, вызвал метод $this->consult() и передал результат; что эквивалентно следующему:

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

Но вызов метода здесь, на самом деле принимает либо Callable или String. В случае String строка может быть [email protected] или SomeClass::staticMethodName.

В случае отозваны, это может быть либо Closure/Anonymous Function или метод экземпляра как [$anObject, 'someMethod'] и в вашем случае это может быть следующее:

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

Кроме того, в этом случае, ваш метод consult должен (вероятно, не совсем точно, поэтому сначала попробуйте защитить) be public вместо protected.

 Смежные вопросы

  • Нет связанных вопросов^_^