<?php

declare(strict_types=1);

namespace App\Framework\Core\Events;

/**
 * Attribut, das eine Methode als Event-Handler kennzeichnet.
 *
 * Beispiel:
 * #[OnEvent]
 * public function handleUserRegistered(UserRegistered $event): void { ... }
 */
#[\Attribute(\Attribute::TARGET_METHOD)]
final class OnEvent
{
    /**
     * @param int|null $priority Priorität des Handlers (höhere Werte werden zuerst ausgeführt)
     * @param bool $stopPropagation Gibt an, ob die Event-Propagation nach diesem Handler gestoppt werden soll
     */
    public function __construct(
        public readonly ?int $priority = null,
        public readonly bool $stopPropagation = false
    ) {
    }
}
