class Transports
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Symfony\Component\Mailer\Transport\Transports implements \Symfony\Component\Mailer\Transport\TransportInterface
Expanded class hierarchy of Transports
1 file declares its use of Transports
- Transport.php in vendor/
symfony/ mailer/ Transport.php
File
-
vendor/
symfony/ mailer/ Transport/ Transports.php, line 24
Namespace
Symfony\Component\Mailer\TransportView source
final class Transports implements TransportInterface {
/**
* @var array<string, TransportInterface>
*/
private array $transports = [];
private TransportInterface $default;
/**
* @param iterable<string, TransportInterface> $transports
*/
public function __construct(iterable $transports) {
foreach ($transports as $name => $transport) {
$this->default ??= $transport;
$this->transports[$name] = $transport;
}
if (!$this->transports) {
throw new LogicException(\sprintf('"%s" must have at least one transport configured.', __CLASS__));
}
}
public function send(RawMessage $message, ?Envelope $envelope = null) : ?SentMessage {
/** @var Message $message */
if (RawMessage::class === $message::class || !$message->getHeaders()
->has('X-Transport')) {
return $this->default
->send($message, $envelope);
}
$headers = $message->getHeaders();
$transport = $headers->get('X-Transport')
->getBody();
$headers->remove('X-Transport');
if (!isset($this->transports[$transport])) {
throw new InvalidArgumentException(\sprintf('The "%s" transport does not exist (available transports: "%s").', $transport, implode('", "', array_keys($this->transports))));
}
try {
return $this->transports[$transport]
->send($message, $envelope);
} catch (\Throwable $e) {
$headers->addTextHeader('X-Transport', $transport);
throw $e;
}
}
public function __toString() : string {
return '[' . implode(',', array_keys($this->transports)) . ']';
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title |
---|---|---|---|---|
Transports::$default | private | property | ||
Transports::$transports | private | property | ||
Transports::send | public | function | Overrides TransportInterface::send | |
Transports::__construct | public | function | ||
Transports::__toString | public | function |