public function __construct(array
$sendersMap, ContainerInterface
$sendersLocator) { $this->sendersMap =
$sendersMap;
$this->sendersLocator =
$sendersLocator;
} public function getSenders(Envelope
$envelope): iterable
{ if ($envelope->
all(TransportNamesStamp::
class)) { foreach ($envelope->
last(TransportNamesStamp::
class)->
getTransportNames() as $senderAlias) { yield from $this->
getSenderFromAlias($senderAlias);
} return;
} $seen =
[];
foreach (HandlersLocator::
listTypes($envelope) as $type) { foreach ($this->sendersMap
[$type] ??
[] as $senderAlias) { if (str_ends_with($type, '*'
) &&
$seen) { // the '*' acts as a fallback, if other senders already matched