Event Dispatcher
Třída Moony\bootstrap\core\services\EventDispatcher umožňuje komponentám aplikace komunikovat prostřednictvím událostí. Listenery se registrují v bootstrap.php.
Registrace listeneru
V souboru bootstrap.php v sekci Event Listeners:
$app->registerEventListener(
'order.new', // název události
OrdersNotification::class, // třída listeneru
'newOrder' // metoda která se zavolá
);
Dispatch události
use Moony\bootstrap\core\services\EventDispatcher;
// Bez dat
EventDispatcher::dispatch('order.new');
// S daty
EventDispatcher::dispatch('order.new', [
'orderId' => $orderId,
'userId' => $userId
]);
Listener třída
class OrdersNotification
{
// Statická metoda — zavolá se bez vytvoření instance
public static function newOrder(?array $data): void
{
Mail::to($data['email'])->send('Nová objednávka', '...');
}
// Nestatická — vytvoří se instance přes DI, pak se zavolá metoda
public function newOrder(?array $data): void
{
// $this je dostupné, třída je v DI kontejneru
}
}
Pokud je metoda listeneru statická, zavolá se přímo. Pokud není, framework vytvoří instanci přes Dependency Injection.
Názvy událostí by měly být konstanty nebo enum hodnoty, ne plain stringy roztroušené po kódu.
