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

namespace IlluminateQueue;

use 
Closure;
use 
IlluminateBusBatchable;
use 
IlluminateBusQueueable;
use 
IlluminateContractsContainerContainer;
use 
IlluminateContractsQueueShouldQueue;
use 
IlluminateFoundationBusDispatchable;
use 
LaravelSerializableClosureSerializableClosure;
use 
ReflectionFunction;

class 
CallQueuedClosure implements ShouldQueue
{
    use 
BatchableDispatchableInteractsWithQueueQueueableSerializesModels;

    
/**
     * The serializable Closure instance.
     *
     * @var LaravelSerializableClosureSerializableClosure
     */
    
public $closure;

    
/**
     * The callbacks that should be executed on failure.
     *
     * @var array
     */
    
public $failureCallbacks = [];

    
/**
     * Indicate if the job should be deleted when models are missing.
     *
     * @var bool
     */
    
public $deleteWhenMissingModels true;

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

    
/**
     * Create a new job instance.
     *
     * @param  Closure  $job
     * @return self
     */
    
public static function create(Closure $job)
    {
        return new 
self(new SerializableClosure($job));
    }

    
/**
     * Execute the job.
     *
     * @param  IlluminateContractsContainerContainer  $container
     * @return void
     */
    
public function handle(Container $container)
    {
        
$container->call($this->closure->getClosure(), ['job' => $this]);
    }

    
/**
     * Add a callback to be executed if the job fails.
     *
     * @param  callable  $callback
     * @return $this
     */
    
public function onFailure($callback)
    {
        
$this->failureCallbacks[] = $callback instanceof Closure
                        
? new SerializableClosure($callback)
                        : 
$callback;

        return 
$this;
    }

    
/**
     * Handle a job failure.
     *
     * @param  Throwable  $e
     * @return void
     */
    
public function failed($e)
    {
        foreach (
$this->failureCallbacks as $callback) {
            
$callback($e);
        }
    }

    
/**
     * 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().')';
    }
}
Онлайн: 1
Реклама