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

namespace IlluminateQueueCapsule;

use 
IlluminateContainerContainer;
use 
IlluminateQueueQueueManager;
use 
IlluminateQueueQueueServiceProvider;
use 
IlluminateSupportTraitsCapsuleManagerTrait;

/**
 * @mixin IlluminateQueueQueueManager
 * @mixin IlluminateContractsQueueQueue
 */
class Manager
{
    use 
CapsuleManagerTrait;

    
/**
     * The queue manager instance.
     *
     * @var IlluminateQueueQueueManager
     */
    
protected $manager;

    
/**
     * Create a new queue capsule manager.
     *
     * @param  IlluminateContainerContainer|null  $container
     * @return void
     */
    
public function __construct(?Container $container null)
    {
        
$this->setupContainer($container ?: new Container);

        
// Once we have the container setup, we will set up the default configuration
        // options in the container "config" bindings. This'll just make the queue
        // manager behave correctly since all the correct bindings are in place.
        
$this->setupDefaultConfiguration();

        
$this->setupManager();

        
$this->registerConnectors();
    }

    
/**
     * Setup the default queue configuration options.
     *
     * @return void
     */
    
protected function setupDefaultConfiguration()
    {
        
$this->container['config']['queue.default'] = 'default';
    }

    
/**
     * Build the queue manager instance.
     *
     * @return void
     */
    
protected function setupManager()
    {
        
$this->manager = new QueueManager($this->container);
    }

    
/**
     * Register the default connectors that the component ships with.
     *
     * @return void
     */
    
protected function registerConnectors()
    {
        
$provider = new QueueServiceProvider($this->container);

        
$provider->registerConnectors($this->manager);
    }

    
/**
     * Get a connection instance from the global manager.
     *
     * @param  string|null  $connection
     * @return IlluminateContractsQueueQueue
     */
    
public static function connection($connection null)
    {
        return static::
$instance->getConnection($connection);
    }

    
/**
     * Push a new job onto the queue.
     *
     * @param  string  $job
     * @param  mixed  $data
     * @param  string|null  $queue
     * @param  string|null  $connection
     * @return mixed
     */
    
public static function push($job$data ''$queue null$connection null)
    {
        return static::
$instance->connection($connection)->push($job$data$queue);
    }

    
/**
     * Push a new an array of jobs onto the queue.
     *
     * @param  array  $jobs
     * @param  mixed  $data
     * @param  string|null  $queue
     * @param  string|null  $connection
     * @return mixed
     */
    
public static function bulk($jobs$data ''$queue null$connection null)
    {
        return static::
$instance->connection($connection)->bulk($jobs$data$queue);
    }

    
/**
     * Push a new job onto the queue after (n) seconds.
     *
     * @param  DateTimeInterface|DateInterval|int  $delay
     * @param  string  $job
     * @param  mixed  $data
     * @param  string|null  $queue
     * @param  string|null  $connection
     * @return mixed
     */
    
public static function later($delay$job$data ''$queue null$connection null)
    {
        return static::
$instance->connection($connection)->later($delay$job$data$queue);
    }

    
/**
     * Get a registered connection instance.
     *
     * @param  string|null  $name
     * @return IlluminateContractsQueueQueue
     */
    
public function getConnection($name null)
    {
        return 
$this->manager->connection($name);
    }

    
/**
     * Register a connection with the manager.
     *
     * @param  array  $config
     * @param  string  $name
     * @return void
     */
    
public function addConnection(array $config$name 'default')
    {
        
$this->container['config']["queue.connections.{$name}"] = $config;
    }

    
/**
     * Get the queue manager instance.
     *
     * @return IlluminateQueueQueueManager
     */
    
public function getQueueManager()
    {
        return 
$this->manager;
    }

    
/**
     * Pass dynamic instance methods to the manager.
     *
     * @param  string  $method
     * @param  array  $parameters
     * @return mixed
     */
    
public function __call($method$parameters)
    {
        return 
$this->manager->$method(...$parameters);
    }

    
/**
     * Dynamically pass methods to the default connection.
     *
     * @param  string  $method
     * @param  array  $parameters
     * @return mixed
     */
    
public static function __callStatic($method$parameters)
    {
        return static::
connection()->$method(...$parameters);
    }
}
Онлайн: 1
Реклама