Dispatchable.php
TLDR
The Dispatchable
trait in the Illuminate\Foundation\Bus
namespace provides methods for dispatching jobs and commands.
Methods
dispatch
Dispatches a job with the given arguments and returns a PendingDispatch
instance.
dispatchIf
Dispatches a job with the given arguments if the given boolean test passes. If the test is an instance of a closure, it is called with a new instance of the class and the given arguments. Returns a PendingDispatch
instance if the test passes and a Fluent
instance if it fails.
dispatchUnless
Dispatches a job with the given arguments unless the given boolean test passes. If the test is an instance of a closure, it is called with a new instance of the class and the given arguments. Returns a PendingDispatch
instance if the test fails and a Fluent
instance if it passes.
dispatchSync
Dispatches a command to its appropriate handler in the current process. Jobs are dispatched to the "sync" queue. Returns the result of the dispatch.
dispatchAfterResponse
Dispatches a command to its appropriate handler after the current process. Calls the dispatch
method with the given arguments and then calls the afterResponse
method on the returned PendingDispatch
instance. Returns the result of the afterResponse
method.
withChain
Sets the jobs that should run if this job is successful. Returns a PendingChain
instance.
<?php
namespace Illuminate\Foundation\Bus;
use Closure;
use Illuminate\Contracts\Bus\Dispatcher;
use Illuminate\Support\Fluent;
trait Dispatchable
{
/**
* Dispatch the job with the given arguments.
*
* @param mixed ...$arguments
* @return \Illuminate\Foundation\Bus\PendingDispatch
*/
public static function dispatch(...$arguments)
{
return new PendingDispatch(new static(...$arguments));
}
/**
* Dispatch the job with the given arguments if the given truth test passes.
*
* @param bool|\Closure $boolean
* @param mixed ...$arguments
* @return \Illuminate\Foundation\Bus\PendingDispatch|\Illuminate\Support\Fluent
*/
public static function dispatchIf($boolean, ...$arguments)
{
if ($boolean instanceof Closure) {
$dispatchable = new static(...$arguments);
return value($boolean, $dispatchable)
? new PendingDispatch($dispatchable)
: new Fluent;
}
return value($boolean)
? new PendingDispatch(new static(...$arguments))
: new Fluent;
}
/**
* Dispatch the job with the given arguments unless the given truth test passes.
*
* @param bool|\Closure $boolean
* @param mixed ...$arguments
* @return \Illuminate\Foundation\Bus\PendingDispatch|\Illuminate\Support\Fluent
*/
public static function dispatchUnless($boolean, ...$arguments)
{
if ($boolean instanceof Closure) {
$dispatchable = new static(...$arguments);
return ! value($boolean, $dispatchable)
? new PendingDispatch($dispatchable)
: new Fluent;
}
return ! value($boolean)
? new PendingDispatch(new static(...$arguments))
: new Fluent;
}
/**
* Dispatch a command to its appropriate handler in the current process.
*
* Queueable jobs will be dispatched to the "sync" queue.
*
* @param mixed ...$arguments
* @return mixed
*/
public static function dispatchSync(...$arguments)
{
return app(Dispatcher::class)->dispatchSync(new static(...$arguments));
}
/**
* Dispatch a command to its appropriate handler after the current process.
*
* @param mixed ...$arguments
* @return mixed
*/
public static function dispatchAfterResponse(...$arguments)
{
return self::dispatch(...$arguments)->afterResponse();
}
/**
* Set the jobs that should run if this job is successful.
*
* @param array $chain
* @return \Illuminate\Foundation\Bus\PendingChain
*/
public static function withChain($chain)
{
return new PendingChain(static::class, $chain);
}
}