layfi-earn/vendor/illuminate/support/Defer/DeferredCallback.php
2025-01-27 20:49:47 +08:00

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);
}
}