Skip to content

Commit 24832d1

Browse files
author
Matías Navarro Carter
committed
Add autoconfigure for services extending PsrProcess interface
This will allow to Symfony users that have autoconfigure/autowiring enabled to avoid defining explicitly the producer service and its tag. Now, the symfony container does it automatically.
1 parent cc52299 commit 24832d1

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

pkg/enqueue-bundle/DependencyInjection/EnqueueExtension.php

+4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Enqueue\Symfony\DefaultTransportFactory;
1212
use Enqueue\Symfony\DriverFactoryInterface;
1313
use Enqueue\Symfony\TransportFactoryInterface;
14+
use Interop\Queue\PsrProcessor;
1415
use Symfony\Component\Config\FileLocator;
1516
use Symfony\Component\Config\Resource\FileResource;
1617
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -72,6 +73,9 @@ public function load(array $configs, ContainerBuilder $container)
7273
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
7374
$loader->load('services.yml');
7475

76+
$container->registerForAutoconfiguration(PsrProcessor::class)
77+
->addTag('enqueue.client.processor');
78+
7579
foreach ($config['transport'] as $name => $transportConfig) {
7680
$this->factories[$name]->createConnectionFactory($container, $transportConfig);
7781
$this->factories[$name]->createContext($container, $transportConfig);

pkg/enqueue-bundle/Tests/Unit/DependencyInjection/EnqueueExtensionTest.php

+16
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use Enqueue\Symfony\MissingTransportFactory;
1818
use Enqueue\Symfony\TransportFactoryInterface;
1919
use Enqueue\Test\ClassExtensionTrait;
20+
use Interop\Queue\PsrProcessor;
2021
use PHPUnit\Framework\TestCase;
2122
use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException;
2223
use Symfony\Component\DependencyInjection\ContainerBuilder;
@@ -633,6 +634,21 @@ public function testShouldThrowIfPackageShouldBeInstalledToUseTransport()
633634
]], $container);
634635
}
635636

637+
public function testShouldLoadProcessAutoconfigureChildDefinition()
638+
{
639+
$container = $this->getContainerBuilder(true);
640+
$extension = new EnqueueExtension();
641+
642+
$extension->load([[
643+
'client' => [],
644+
'transport' => [],
645+
]], $container);
646+
647+
$autoconfigured = $container->getAutoconfiguredInstanceof();
648+
self::assertArrayHasKey(PsrProcessor::class, $autoconfigured);
649+
self::assertTrue($autoconfigured[PsrProcessor::class]->hasTag('enqueue.client.processor'));
650+
}
651+
636652
/**
637653
* @param bool $debug
638654
*

0 commit comments

Comments
 (0)