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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[李景山php]每天laravel-20160830|CallQueuedHandler相关的知识,希望对你有一定的参考价值。

<?php

namespace 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.
}


本文出自 “专注php” 博客,请务必保留此出处http://jingshanls.blog.51cto.com/3357095/1789390

以上是关于[李景山php]每天laravel-20160830|CallQueuedHandler的主要内容,如果未能解决你的问题,请参考以下文章

[李景山php]每天laravel-20161028|Translator.php

[李景山php]每天laravel-20161107|PhpEngine.php

[李景山php]每天laravel-20161106|EngineResolver.php

[李景山php]每天laravel-20161108|ShareErrorsFromSession.php

[李景山php]每天laravel-20160825|Encrypter

[李景山php]每天laravel-20161113|FileViewFinder-1.php