您的位置:首页 > 编程语言 > PHP开发

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

2016-06-15 08:57 477 查看
<?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.
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: