Passed
Branch master (562d32)
by Gabriel
01:25
created

LeagueContainer::set()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 1
c 2
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 3
crap 1
1
<?php
2
3
namespace Nip\Container\Bridges;
4
5
use League\Container\Container as Container;
6
use LogicException;
7
use Nip\Container\Traits\ContainerArrayAccessTrait;
8
9
/**
10
 * Class LeagueContainer
11
 * @package Nip\Container\Bridges
12
 */
13
abstract class LeagueContainer extends Container implements BridgeInterface
14
{
15
    use ContainerArrayAccessTrait;
16
17
    /**
18
     * The registered type aliases.
19
     *
20
     * @var array
21
     */
22
    protected $aliases = [];
23
24
    /**
25
     * @inheritdoc
26
     */
27 2
    public function set($alias, $concrete = null, $share = false)
28
    {
29 2
        return $this->add($alias, $concrete, $share);
30
    }
31
32
    /**
33
     * @inheritdoc
34
     */
35
    public function remove($alias)
36
    {
37
    }
38
39
    /**
40
     * Determine if a given string is an alias.
41
     *
42
     * @param  string $name
43
     * @return bool
44
     */
45
    public function isAlias($name)
46
    {
47
        return isset($this->aliases[$name]);
48
    }
49
50
    /**
51
     * Alias a type to a different name.
52
     *
53
     * @param  string $abstract
54
     * @param  string $alias
55
     * @return void
56
     */
57
    public function alias($abstract, $alias)
58
    {
59
        $this->aliases[$alias] = $abstract;
60
//        $this->abstractAliases[$abstract][] = $alias;
61
62
        $this->share($alias, function () use ($abstract) {
63
            return $this->get($abstract);
64
        });
65
    }
66
67
    /**
68
     * Get the alias for an abstract if available.
69
     *
70
     * @param  string $abstract
71
     * @return string
72
     *
73
     * @throws \LogicException
74
     */
75
    public function getAlias($abstract)
76
    {
77
        if (!isset($this->aliases[$abstract])) {
78
            return $abstract;
79
        }
80
        if ($this->aliases[$abstract] === $abstract) {
81
            throw new LogicException("[{$abstract}] is aliased to itself.");
82
        }
83
        return $this->getAlias($this->aliases[$abstract]);
84
    }
85
}
86