ContainerBuilderFactory::createInMemory()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 20
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 12
c 1
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 create(
25
        string $pricesCsvPath,
26
    ): ContainerBuilder {
27
        $containerBuilder = new ContainerBuilder();
28
29
        $containerBuilder
30
            ->register(Connection::class, Connection::class)
31
            ->setFactory([ConnectionManager::class, 'createConnection']);
32
33
        $containerBuilder
34
            ->register(EntityManager::class, EntityManager::class)
35
            ->setFactory([EntityManagerFactory::class, 'createEntityManager'])
36
            ->setArgument('$schemaClassNames', [Cart::class, Item::class])
37
            ->setArgument('$types', [])
38
            ->setAutowired(true);
39
40
        $containerBuilder
41
            ->register(CartRepository::class, DoctrineCartRepository::class)
42
            ->setAutowired(true);
43
44
        $containerBuilder
45
            ->register(Prices::class, CsvPrices::class)
46
            ->addArgument($pricesCsvPath);
47
48
        $containerBuilder
49
            ->register(CartUseCase::class, CartUseCaseApplication::class)
50
            ->setAutowired(true)
51
            ->setPublic(true);
52
53
        $containerBuilder->compile();
54
55
        return $containerBuilder;
56
    }
57
58
    public static function createInMemory(
59
        string $pricesCsvPath,
60
    ): ContainerBuilder {
61
        $containerBuilder = new ContainerBuilder();
62
63
        $containerBuilder
64
            ->register(CartRepository::class, MemoryCartRepository::class);
65
66
        $containerBuilder
67
            ->register(Prices::class, CsvPrices::class)
68
            ->addArgument($pricesCsvPath);
69
70
        $containerBuilder
71
            ->register(CartUseCase::class, CartUseCaseApplication::class)
72
            ->setAutowired(true)
73
            ->setPublic(true);
74
75
        $containerBuilder->compile();
76
77
        return $containerBuilder;
78
    }
79
}
80