Completed
Push — master ( 4e1fd0...6b9342 )
by Matthieu
02:24
created

Reference   A

Coupling/Cohesion

Components 1
Dependencies 1

Complexity

Total Complexity 8

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 60
rs 10
c 0
b 0
f 0
wmc 8
lcom 1
cbo 1

8 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getName() 0 4 1
A setName() 0 4 1
A getTargetEntryName() 0 4 1
A resolve() 0 4 1
A isResolvable() 0 4 1
A replaceNestedDefinitions() 0 4 1
A __toString() 0 7 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace DI\Definition;
6
7
use Psr\Container\ContainerInterface;
8
9
/**
10
 * Represents a reference to another entry.
11
 *
12
 * @author Matthieu Napoli <[email protected]>
13
 */
14
class Reference implements Definition, SelfResolvingDefinition
15
{
16
    /**
17
     * Entry name.
18
     * @var string
19
     */
20
    private $name = '';
21
22
    /**
23
     * Name of the target entry.
24
     * @var string
25
     */
26
    private $targetEntryName;
27
28
    /**
29
     * @param string $targetEntryName Name of the target entry
30
     */
31
    public function __construct(string $targetEntryName)
32
    {
33
        $this->targetEntryName = $targetEntryName;
34
    }
35
36
    public function getName() : string
37
    {
38
        return $this->name;
39
    }
40
41
    public function setName(string $name)
42
    {
43
        $this->name = $name;
44
    }
45
46
    public function getTargetEntryName() : string
47
    {
48
        return $this->targetEntryName;
49
    }
50
51
    public function resolve(ContainerInterface $container)
52
    {
53
        return $container->get($this->getTargetEntryName());
54
    }
55
56
    public function isResolvable(ContainerInterface $container) : bool
57
    {
58
        return $container->has($this->getTargetEntryName());
59
    }
60
61
    public function replaceNestedDefinitions(callable $replacer)
62
    {
63
        // no nested definitions
64
    }
65
66
    public function __toString()
67
    {
68
        return sprintf(
69
            'get(%s)',
70
            $this->targetEntryName
71
        );
72
    }
73
}
74