Глоссарий

Domain Events (Доменные события)

Domain Event — факт, произошедший в бизнес-домене: OrderPlaced, PaymentFailed, UserRegistered. Называется в прошедшем времени, так как описывает то, что уже произошло. Центральный концепт DDD и Event-Driven Architecture.

Чем отличается от обычного события

Техническое событие: ButtonClicked, FileUploaded. Доменное событие: InvoiceApproved, SubscriptionExpired — несёт бизнес-значение и является частью ubiquitous language.

Зачем использовать

Пример

class OrderPlaced {
  public function __construct(
    public readonly string $orderId,
    public readonly string $userId,
    public readonly Money  $total,
    public readonly \DateTimeImmutable $occurredAt,
  ) {}
}

// После успешного сохранения:
EventDispatcher::dispatch(new OrderPlaced($order->id, ...));