AppMetaModule::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BEAR\Package\Module;
6
7
use BEAR\AppMeta\AbstractAppMeta;
8
use BEAR\Resource\Annotation\AppName;
9
use BEAR\Sunday\Extension\Application\AppInterface;
10
use Ray\Di\AbstractModule;
11
use Ray\Di\Scope;
12
13
use function assert;
14
use function class_exists;
15
16
/**
17
 * Provides AbstractAppMeta and derived bindings
18
 *
19
 * The following bindings are provided:
20
 *
21
 * AbstractAppMeta
22
 * AppInterface
23
 * :AppName
24
 */
25
class AppMetaModule extends AbstractModule
26
{
27
    public function __construct(private AbstractAppMeta $appMeta, AbstractModule|null $module = null)
28
    {
29
        parent::__construct($module);
30
    }
31
32
    /**
33
     * {@inheritDoc}
34
     */
35
    protected function configure(): void
36
    {
37
        $this->bind(AbstractAppMeta::class)->toInstance($this->appMeta);
38
        $appClass = $this->appMeta->name . '\Module\App';
39
        assert(class_exists($appClass));
40
        $this->bind(AppInterface::class)->to($appClass)->in(Scope::SINGLETON);
41
        $this->bind()->annotatedWith(AppName::class)->toInstance($this->appMeta->name);
42
    }
43
}
44