An OrderPlaced event carrying a formatted currency string, which is a decision about a locale baked into a permanent record.
// what it carried
new OrderPlaced(
orderId: $order->id,
total: '£49.00', // ← formatted, in en_GB
placedAt: '3 March 2025', // ← also formatted
);
// what it carries now
new OrderPlaced(
orderId: $order->id,
totalMinorUnits: 4900,
currency: 'GBP',
placedAt: new DateTimeImmutable('2025-03-03T09:41:02+00:00'),
);
The formatted string was convenient for the one consumer that emailed it and wrong for the consumer added later that summed totals. An event is a record of what happened and formatting is a decision about who is reading — putting the second inside the first means the event is only usable by an audience that was assumed in 2021.