vendor/zenstruck/messenger-test/src/ZenstruckMessengerTestBundle.php line 26

  1. <?php
  2. /*
  3.  * This file is part of the zenstruck/messenger-test package.
  4.  *
  5.  * (c) Kevin Bond <kevinbond@gmail.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Zenstruck\Messenger\Test;
  11. use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
  12. use Symfony\Component\DependencyInjection\ContainerBuilder;
  13. use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
  14. use Symfony\Component\DependencyInjection\Reference;
  15. use Symfony\Component\HttpKernel\Bundle\Bundle;
  16. use Symfony\Component\Messenger\Transport\TransportInterface;
  17. use Zenstruck\Messenger\Test\Transport\TestTransportFactory;
  18. use Zenstruck\Messenger\Test\Transport\TestTransportRegistry;
  19. /**
  20.  * @author Kevin Bond <kevinbond@gmail.com>
  21.  */
  22. final class ZenstruckMessengerTestBundle extends Bundle implements CompilerPassInterface
  23. {
  24.     public function build(ContainerBuilder $container): void
  25.     {
  26.         $container->register('zenstruck_messenger_test.transport_factory'TestTransportFactory::class)
  27.             ->setArguments([new Reference('messenger.routable_message_bus'), new Reference('event_dispatcher')])
  28.             ->addTag('messenger.transport_factory')
  29.         ;
  30.         $container->register('zenstruck_messenger_test.transport_registry'TestTransportRegistry::class)
  31.             ->setPublic(true)
  32.         ;
  33.         $container->addCompilerPass($this);
  34.     }
  35.     public function getContainerExtension(): ?ExtensionInterface
  36.     {
  37.         return null;
  38.     }
  39.     public function process(ContainerBuilder $container): void
  40.     {
  41.         $registry $container->getDefinition('zenstruck_messenger_test.transport_registry');
  42.         foreach ($container->findTaggedServiceIds('messenger.receiver') as $id => $tags) {
  43.             $name $id;
  44.             if (!$class $container->getDefinition($name)->getClass()) {
  45.                 continue;
  46.             }
  47.             if (!\is_a($classTransportInterface::class, true)) {
  48.                 continue;
  49.             }
  50.             foreach ($tags as $tag) {
  51.                 if (isset($tag['alias'])) {
  52.                     $name $tag['alias'];
  53.                 }
  54.             }
  55.             $registry->addMethodCall('register', [$name, new Reference($id)]);
  56.         }
  57.     }
  58. }