2017-02-08 2 views
-2

[InvalidArgumentException]スケジュールされたコールバックイベントが無効です。文字列か呼び出し可能でなければなりません。 これはあなたがたとえば、あなたがこのき、callメソッドにパラメータの間違った種類を通過してきたため、エラーがスローされたコードこんにちは私は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

次のとおりです。ここで

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

、あなたがしましたが実際には$this->consult()メソッドと呼ばれ、結果を渡しました。これはこれに相当します。

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

しかし、ここでの呼び出し方法、実際にCallableまたはStringのいずれかを受け入れます。 Stringの場合、文字列は[email protected]またはSomeClass::staticMethodNameとなります。

呼び出し可能の場合には、それは[$anObject, 'someMethod']ようClosure/Anonymous Functionまたはインスタンスメソッドのいずれかであるとあなたのケースで、それは、次のことができます:

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

また、このケースでは、あなたのconsult方法は( べきおそらく正確にはわからないので、最初に保護してみてください) protectedの代わりにpublicになります。

関連する問題