<?php namespace Illuminate\Queue; use ReflectionFunction; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Contracts\Container\Container; class CallQueuedClosure implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; /** * The serializable Closure instance. * * @var \Illuminate\Queue\SerializableClosure */ public $closure; /** * Indicate if the job should be deleted when models are missing. * * @var bool */ public $deleteWhenMissingModels = true; /** * Create a new job instance. * * @param \Illuminate\Queue\SerializableClosure $closure * @return void */ public function __construct(SerializableClosure $closure) { $this->closure = $closure; } /** * Execute the job. * * @param \Illuminate\Contracts\Container\Container $container * @return void */ public function handle(Container $container) { $container->call($this->closure->getClosure()); } /** * Get the display name for the queued job. * * @return string */ public function displayName() { $reflection = new ReflectionFunction($this->closure->getClosure()); return 'Closure ('.basename($reflection->getFileName()).':'.$reflection->getStartLine().')'; } }