Completed
Branch 2.0 (63d421)
by Anton
05:39
created

Directories   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 54
rs 10
c 0
b 0
f 0
wmc 7
lcom 1
cbo 1

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 2
A has() 0 4 1
A set() 0 7 1
A get() 0 8 2
A getAll() 0 4 1
1
<?php
2
/**
3
 * Spiral Framework.
4
 *
5
 * @license   MIT
6
 * @author    Anton Titov (Wolfy-J)
7
 */
8
9
namespace Spiral\Framework;
10
11
use Spiral\Framework\Exceptions\DirectoryException;
12
13
/**
14
 * Manage application directories set.
15
 */
16
final class Directories implements DirectoriesInterface
17
{
18
    /** @var array */
19
    private $directories = [];
20
21
    /**
22
     * @param array $directories
23
     */
24
    public function __construct(array $directories)
25
    {
26
        foreach ($directories as $name => $directory) {
27
            $this->set($name, $directory);
28
        }
29
    }
30
31
    /**
32
     * {@inheritdoc}
33
     */
34
    public function has(string $name): bool
35
    {
36
        return array_key_exists($name, $this->directories);
37
    }
38
39
    /**
40
     * {@inheritdoc}
41
     */
42
    public function set(string $name, string $path): DirectoriesInterface
43
    {
44
        $path = str_replace(['\\', '//'], '/', $path);
45
        $this->directories[$name] = rtrim($path, '/') . '/';
46
47
        return $this;
48
    }
49
50
    /**
51
     * {@inheritdoc}
52
     */
53
    public function get(string $name): string
54
    {
55
        if (!$this->has($name)) {
56
            throw new DirectoryException("Undefined directory '{$name}'");
57
        }
58
59
        return $this->directories[$name];
60
    }
61
62
    /**
63
     * {@inheritdoc}
64
     */
65
    public function getAll(): array
66
    {
67
        return $this->directories;
68
    }
69
}