Skip to content

Commit f60b129

Browse files
committed
Refactor: rework ServiceProviderContainer
1 parent a4e45b6 commit f60b129

File tree

5 files changed

+79
-63
lines changed

5 files changed

+79
-63
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Contributte\Messenger\Container;
4+
5+
use Nette\DI\Container;
6+
use Symfony\Contracts\Service\ServiceProviderInterface;
7+
8+
/**
9+
* @implements ServiceProviderInterface<object>
10+
*/
11+
class ServiceProviderContainer implements ServiceProviderInterface
12+
{
13+
14+
/** @var array<string, string> */
15+
private array $map;
16+
17+
private NetteContainer $container;
18+
19+
/**
20+
* @param array<string, string> $map
21+
*/
22+
public function __construct(array $map, Container $context)
23+
{
24+
$this->map = $map;
25+
$this->container = new NetteContainer($map, $context);
26+
}
27+
28+
public function get(string $id): object
29+
{
30+
return $this->container->get($id);
31+
}
32+
33+
public function has(string $id): bool
34+
{
35+
return $this->container->has($id);
36+
}
37+
38+
/**
39+
* @return array<string, string>
40+
*/
41+
public function getProvidedServices(): array
42+
{
43+
return $this->map;
44+
}
45+
46+
}

src/DI/Pass/TransportPass.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
namespace Contributte\Messenger\DI\Pass;
44

55
use Contributte\Messenger\Container\NetteContainer;
6+
use Contributte\Messenger\Container\ServiceProviderContainer;
67
use Contributte\Messenger\DI\MessengerExtension;
78
use Contributte\Messenger\DI\Utils\BuilderMan;
8-
use Contributte\Messenger\Transport\FailureTransportServiceProvider;
99
use Nette\DI\Definitions\ServiceDefinition;
1010
use Symfony\Component\Messenger\Retry\MultiplierRetryStrategy;
1111

@@ -61,7 +61,7 @@ public function loadPassConfiguration(): void
6161
->setAutowired(false);
6262

6363
$builder->addDefinition($this->prefix('failureTransport.serviceProvider'))
64-
->setFactory(FailureTransportServiceProvider::class)
64+
->setFactory(ServiceProviderContainer::class)
6565
->setAutowired(false);
6666
}
6767

src/Transport/FailureTransportServiceProvider.php

Lines changed: 0 additions & 56 deletions
This file was deleted.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Tests\Cases\Container;
4+
5+
use Contributte\Messenger\Container\ServiceProviderContainer;
6+
use Contributte\Messenger\Exception\Logical\ContainerException;
7+
use Contributte\Tester\Toolkit;
8+
use Nette\DI\Container;
9+
use Tester\Assert;
10+
11+
require_once __DIR__ . '/../../bootstrap.php';
12+
13+
// Service container
14+
Toolkit::test(function (): void {
15+
$map = ['test' => 'foo'];
16+
$context = new Container();
17+
$container = new ServiceProviderContainer($map, $context);
18+
19+
Assert::true($container->has('test'));
20+
Assert::exception(
21+
fn () => $container->get('test'),
22+
ContainerException::class,
23+
"Service 'test' not found"
24+
);
25+
Assert::equal($map, $container->getProvidedServices());
26+
});

tests/Cases/DI/MessengerExtension.failureTransport.phpt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace Tests\Cases\DI;
44

5+
use Contributte\Messenger\Container\ServiceProviderContainer;
56
use Contributte\Messenger\DI\MessengerExtension;
67
use Contributte\Messenger\Exception\LogicalException;
7-
use Contributte\Messenger\Transport\FailureTransportServiceProvider;
88
use Contributte\Tester\Toolkit;
99
use Nette\DI\Compiler;
1010
use Tester\Assert;
@@ -38,9 +38,9 @@ Toolkit::test(function (): void {
3838
'messenger.transport.transport2' => 'transport1',
3939
], $services);
4040

41-
/** @var FailureTransportServiceProvider $serviceProvider */
41+
/** @var ServiceProviderContainer $serviceProvider */
4242
$serviceProvider = $container->getService('messenger.failureTransport.serviceProvider');
43-
Assert::type(FailureTransportServiceProvider::class, $serviceProvider);
43+
Assert::type(ServiceProviderContainer::class, $serviceProvider);
4444
Assert::same([
4545
'transport1' => 'messenger.transport.transport1',
4646
], $serviceProvider->getProvidedServices());
@@ -126,9 +126,9 @@ Toolkit::test(static function (): void {
126126
'messenger.transport.transport3' => 'transport1',
127127
], $services);
128128

129-
/** @var FailureTransportServiceProvider $serviceProvider */
129+
/** @var ServiceProviderContainer $serviceProvider */
130130
$serviceProvider = $container->getService('messenger.failureTransport.serviceProvider');
131-
Assert::type(FailureTransportServiceProvider::class, $serviceProvider);
131+
Assert::type(ServiceProviderContainer::class, $serviceProvider);
132132
Assert::same([
133133
'transport1' => 'messenger.transport.transport1',
134134
'transport3' => 'messenger.transport.transport3',

0 commit comments

Comments
 (0)