Home  >  Article  >  Backend Development  >  [李景山php]每天laravel-20160830|CallQueuedHandler

[李景山php]每天laravel-20160830|CallQueuedHandler

WBOY
WBOYOriginal
2016-06-20 12:25:41773browse

<?phpnamespace Illuminate\Events;use Illuminate\Contracts\Queue\Job;use Illuminate\Contracts\Container\Container;class CallQueuedHandler{// Call Queued Handler    /**     * The container instance.     *     * @var \Illuminate\Contracts\Container\Container     */    protected $container;// a container instance.    /**     * Create a new job instance.     *     * @param  \Illuminate\Contracts\Container\Container  $container     * @return void     */    public function __construct(Container $container)// this is a interface    {        $this->container = $container;// use this container that is Container    }    /**     * Handle the queued job.     *     * @param  \Illuminate\Contracts\Queue\Job  $job     * @param  array  $data     * @return void     */    public function call(Job $job, array $data)// do some thing for this job, handle the queued job.    {// Job $job is a interface , $data is a array,        $handler = $this->setJobInstanceIfNecessary(// set Job Instance if necessary            $job, $this->container->make($data['class'])        );// this handler will be make if it necessary       // $job, $this->container to make $data class        call_user_func_array(            [$handler, $data['method']], unserialize($data['data'])        );// call_user_func_array        if (! $job->isDeletedOrReleased()) {// if this job need be released or deleted            $job->delete();        }    }    /**     * Set the job instance of the given class if necessary.     *     * @param  \Illuminate\Contracts\Queue\Job  $job     * @param  mixed  $instance     * @return mixed     */    protected function setJobInstanceIfNecessary(Job $job, $instance)    {        if (in_array('Illuminate\Queue\InteractsWithQueue', class_uses_recursive(get_class($instance)))) {            $instance->setJob($job);        }// if in the necessary array data, we will set this job.        return $instance; // return this instance    }//set the job be instance of the given class, if necessary.!    /**     * Call the failed method on the job instance.     *     * @param  array  $data     * @return void     */    public function failed(array $data)    {        $handler = $this->container->make($data['class']);// make handler        if (method_exists($handler, 'failed')) {// if has this function , to use it            call_user_func_array([$handler, 'failed'], unserialize($data['data']));        }    }//call the failed method on the job instance.}


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn