ImportAppModule   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 9
dl 0
loc 31
rs 10
c 1
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 2
A configure() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BEAR\Package\Module;
6
7
use BEAR\Package\Module\Import\ImportApp;
8
use BEAR\Resource\Annotation\ImportAppConfig;
9
use BEAR\Resource\Module\SchemeCollectionProvider;
10
use BEAR\Resource\SchemeCollectionInterface;
11
use Override;
12
use Ray\Di\AbstractModule;
13
use Ray\Di\Exception\NotFound;
14
15
/**
16
 * Provides SchemeCollectionInterface and derived bindings
17
 *
18
 * The following bindings are provided:
19
 *
20
 * SchemeCollectionInterface
21
 * SchemeCollectionInterface:original
22
 * :ImportAppConfig
23
 */
24
final class ImportAppModule extends AbstractModule
25
{
26
    /**
27
     * Import scheme config
28
     *
29
     * @var array<ImportApp>
30
     */
31
    private array $importApps = [];
32
33
    /** @param array<ImportApp> $importApps */
34
    public function __construct(array $importApps)
35
    {
36
        foreach ($importApps as $importApp) {
37
            // create import config
38
            $this->importApps[] = $importApp;
39
        }
40
41
        parent::__construct();
42
    }
43
44
    /**
45
     * {@inheritDoc}
46
     *
47
     * @throws NotFound
48
     */
49
    #[Override]
50
    protected function configure(): void
51
    {
52
        $this->bind()->annotatedWith(ImportAppConfig::class)->toInstance($this->importApps);
53
        $this->bind(SchemeCollectionInterface::class)->annotatedWith('original')->toProvider(SchemeCollectionProvider::class);
54
        $this->bind(SchemeCollectionInterface::class)->toProvider(ImportSchemeCollectionProvider::class);
55
    }
56
}
57