/
githubmirror
/
symfony
Обзор
Документация
Войти
/
githubmirror
/
symfony
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
8.2
src/Symfony/Component/Notifier/Transport/Transports.php
76 строк
2 KB
Alexander M. Turek
Prefix all sprintf() calls
20 июн 2024, 18:52
20 июн 2024, 18:52
6ce530c
Код
Авторство
О чём код?
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Notifier\Transport; use Symfony\Component\Notifier\Exception\InvalidArgumentException; use Symfony\Component\Notifier\Exception\LogicException; use Symfony\Component\Notifier\Message\MessageInterface; use Symfony\Component\Notifier\Message\SentMessage; /** * @author Fabien Potencier <fabien@symfony.com> */ final class Transports implements TransportInterface { /** * @var array<string, TransportInterface> */ private array $transports = []; /** * @param iterable<string, TransportInterface> $transports */ public function __construct(iterable $transports) { foreach ($transports as $name => $transport) { $this->transports[$name] = $transport; } } public function __toString(): string { return '['.implode(',', array_keys($this->transports)).']'; } public function supports(MessageInterface $message): bool { foreach ($this->transports as $transport) { if ($transport->supports($message)) { return true; } } return false; } public function send(MessageInterface $message): SentMessage { if (!$transport = $message->getTransport()) { foreach ($this->transports as $transport) { if ($transport->supports($message)) { return $transport->send($message); } } throw new LogicException(\sprintf('None of the available transports support the given message (available transports: "%s").', implode('", "', array_keys($this->transports)))); } if (!isset($this->transports[$transport])) { throw new InvalidArgumentException(\sprintf('The "%s" transport does not exist (available transports: "%s").', $transport, implode('", "', array_keys($this->transports)))); } if (!$this->transports[$transport]->supports($message)) { throw new LogicException(\sprintf('The "%s" transport does not support the given message.', $transport)); } return $this->transports[$transport]->send($message); } }