42 lines
753 B
PHP
42 lines
753 B
PHP
<?php
|
|
|
|
namespace Laravel\Prompts\Concerns;
|
|
|
|
use Closure;
|
|
|
|
trait Events
|
|
{
|
|
/**
|
|
* The registered event listeners.
|
|
*
|
|
* @var array<string, array<int, Closure>>
|
|
*/
|
|
protected array $listeners = [];
|
|
|
|
/**
|
|
* Register an event listener.
|
|
*/
|
|
public function on(string $event, Closure $callback): void
|
|
{
|
|
$this->listeners[$event][] = $callback;
|
|
}
|
|
|
|
/**
|
|
* Emit an event.
|
|
*/
|
|
public function emit(string $event, mixed ...$data): void
|
|
{
|
|
foreach ($this->listeners[$event] ?? [] as $listener) {
|
|
$listener(...$data);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Clean the event listeners.
|
|
*/
|
|
public function clearListeners(): void
|
|
{
|
|
$this->listeners = [];
|
|
}
|
|
}
|