56 lines
1.1 KiB
PHP
56 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Illuminate\Support\Defer;
|
|
|
|
use Illuminate\Support\Str;
|
|
|
|
class DeferredCallback
|
|
{
|
|
/**
|
|
* Create a new deferred callback instance.
|
|
*
|
|
* @param callable $callback
|
|
* @return void
|
|
*/
|
|
public function __construct(public $callback, public ?string $name = null, public bool $always = false)
|
|
{
|
|
$this->name = $name ?? (string) Str::uuid();
|
|
}
|
|
|
|
/**
|
|
* Specify the name of the deferred callback so it can be cancelled later.
|
|
*
|
|
* @param string $name
|
|
* @return $this
|
|
*/
|
|
public function name(string $name): self
|
|
{
|
|
$this->name = $name;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Indicate that the deferred callback should run even on unsuccessful requests and jobs.
|
|
*
|
|
* @param bool $always
|
|
* @return $this
|
|
*/
|
|
public function always(bool $always = true): self
|
|
{
|
|
$this->always = $always;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Invoke the deferred callback.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __invoke(): void
|
|
{
|
|
call_user_func($this->callback);
|
|
}
|
|
}
|