Вход Регистрация
Файл: gapps/vendor/laravel/framework/src/Illuminate/Events/CallQueuedHandler.php
Строк: 100
<?php

namespace IlluminateEvents;

use 
IlluminateContractsQueueJob;
use 
IlluminateContractsContainerContainer;

class 
CallQueuedHandler
{
    
/**
     * The container instance.
     *
     * @var IlluminateContractsContainerContainer
     */
    
protected $container;

    
/**
     * Create a new job instance.
     *
     * @param  IlluminateContractsContainerContainer  $container
     * @return void
     */
    
public function __construct(Container $container)
    {
        
$this->container $container;
    }

    
/**
     * Handle the queued job.
     *
     * @param  IlluminateContractsQueueJob  $job
     * @param  array  $data
     * @return void
     */
    
public function call(Job $job, array $data)
    {
        
$handler $this->setJobInstanceIfNecessary(
            
$job$this->container->make($data['class'])
        );

        
call_user_func_array(
            [
$handler$data['method']], unserialize($data['data'])
        );

        if (! 
$job->isDeletedOrReleased()) {
            
$job->delete();
        }
    }

    
/**
     * Set the job instance of the given class if necessary.
     *
     * @param  IlluminateContractsQueueJob  $job
     * @param  mixed  $instance
     * @return mixed
     */
    
protected function setJobInstanceIfNecessary(Job $job$instance)
    {
        if (
in_array('IlluminateQueueInteractsWithQueue'class_uses_recursive(get_class($instance)))) {
            
$instance->setJob($job);
        }

        return 
$instance;
    }

    
/**
     * Call the failed method on the job instance.
     *
     * @param  array  $data
     * @return void
     */
    
public function failed(array $data)
    {
        
$handler $this->container->make($data['class']);

        if (
method_exists($handler'failed')) {
            
call_user_func_array([$handler'failed'], unserialize($data['data']));
        }
    }
}
Онлайн: 0
Реклама