Passed
Push — master ( 2c3ef1...e0ed2d )
by Svaťa
02:26
created

ContainerBuilderFactory::createInMemory()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 20
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 12
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 20
rs 9.8666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Simara\Cart\Infrastructure\Symfony;
6
7
use Doctrine\DBAL\Connection;
8
use Doctrine\ORM\EntityManager;
9
use Simara\Cart\Application\CartUseCase;
10
use Simara\Cart\Application\CartUseCaseApplication;
11
use Simara\Cart\Domain\Cart\Cart;
12
use Simara\Cart\Domain\Cart\CartRepository;
13
use Simara\Cart\Domain\Cart\Item;
14
use Simara\Cart\Domain\Prices\Prices;
15
use Simara\Cart\Infrastructure\CsvPrices;
16
use Simara\Cart\Infrastructure\DoctrineCartRepository;
17
use Simara\Cart\Infrastructure\MemoryCartRepository;
18
use Simara\Cart\Utils\ConnectionManager;
19
use Simara\Cart\Utils\EntityManagerFactory;
20
use Symfony\Component\DependencyInjection\ContainerBuilder;
0 ignored issues
show
Bug introduced by
The type Symfony\Component\Depend...ection\ContainerBuilder was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
21
22
final class ContainerBuilderFactory
23
{
24
    public static function createInMemory(
25
        string $pricesCsvPath,
26
    ): ContainerBuilder {
27
        $containerBuilder = new ContainerBuilder();
28
29
        $containerBuilder
30
            ->register(CartRepository::class, MemoryCartRepository::class);
31
32
        $containerBuilder
33
            ->register(Prices::class, CsvPrices::class)
34
            ->addArgument($pricesCsvPath);
35
36
        $containerBuilder
37
            ->register(CartUseCase::class, CartUseCaseApplication::class)
38
            ->setAutowired(true)
39
            ->setPublic(true);
40
41
        $containerBuilder->compile();
42
43
        return $containerBuilder;
44
    }
45
    public static function create(
46
        string $pricesCsvPath,
47
    ): ContainerBuilder {
48
        $containerBuilder = new ContainerBuilder();
49
50
        $containerBuilder
51
            ->register(Connection::class, Connection::class)
52
            ->setFactory([ConnectionManager::class, 'createConnection']);
53
54
        $containerBuilder
55
            ->register(EntityManager::class, EntityManager::class)
56
            ->setFactory([EntityManagerFactory::class, 'createEntityManager'])
57
            ->setArgument('$schemaClassNames', [Cart::class, Item::class])
58
            ->setArgument('$types', [])
59
            ->setAutowired(true);
60
61
        $containerBuilder
62
            ->register(CartRepository::class, DoctrineCartRepository::class)
63
            ->setAutowired(true);
64
65
        $containerBuilder
66
            ->register(Prices::class, CsvPrices::class)
67
            ->addArgument($pricesCsvPath);
68
69
        $containerBuilder
70
            ->register(CartUseCase::class, CartUseCaseApplication::class)
71
            ->setAutowired(true)
72
            ->setPublic(true);
73
74
        $containerBuilder->compile();
75
76
        return $containerBuilder;
77
    }
78
}
79