同じクラス内にあるカスタム ハンドラー メソッドを実行するために、タスクをキューにプッシュする次のようなコードを考えてみましょう。
<?php namespace Space;
class Spaceship {
public static function cruise()
{
// Throtting in 3 seconds...
Queue::later(3, '\Space\Spaceship@throttle', $coordinates, 'queue-name');
}
public static function throttle($job, $data)
{
$job->delete();
return 'ok';
}
}
$job->delete(); を追加する前に、これはうまくいきました。しかし、今ではエラーが発生しています:
exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to a member function delete() on a non-object
Laravel 4.2 のドキュメントには、プッシュ キュー タスクがカスタム ハンドラ メソッドを指している場合、 $job->delete() を使用してキューからタスクを明示的に削除する必要がない理由が説明されていません。それでも、この種の実装は機能し、$job パラメーターがログに記録されると、それは false になります。