ModelMetadata::setSources()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 3
nc 2
nop 1
dl 0
loc 6
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace Charcoal\Model;
4
5
use InvalidArgumentException;
6
7
// From 'charcoal-core'
8
use Charcoal\Model\AbstractMetadata;
9
10
/**
11
 *
12
 */
13
class ModelMetadata extends AbstractMetadata
14
{
15
    /**
16
     * The metadata identifier.
17
     *
18
     * @var string
19
     */
20
    private $ident;
21
22
    /**
23
     * The model's sources.
24
     *
25
     * @var array
26
     */
27
    private $sources;
28
29
    /**
30
     * The model's default source.
31
     *
32
     * @var string
33
     */
34
    private $defaultSource;
35
36
    /**
37
     * Set the metadata identifier.
38
     *
39
     * @param  string $ident The metadata identifier.
40
     * @throws InvalidArgumentException If identifier is not a string.
41
     * @return self
42
     */
43
    public function setIdent($ident)
44
    {
45
        if (!is_string($ident)) {
0 ignored issues
show
introduced by
The condition is_string($ident) is always true.
Loading history...
46
            throw new InvalidArgumentException(
47
                sprintf(
48
                    '[%s] Identifier must be a string; received %s',
49
                    get_called_class(),
50
                    (is_object($ident) ? get_class($ident) : gettype($ident))
51
                )
52
            );
53
        }
54
55
        $this->ident = $ident;
56
57
        return $this;
58
    }
59
60
    /**
61
     * Retrieve the metadata identifier.
62
     *
63
     * @return string
64
     */
65
    public function ident()
66
    {
67
        return $this->ident;
68
    }
69
70
    /**
71
     * @param array $sources The available sources for this model.
72
     * @return self
73
     */
74
    public function setSources(array $sources)
75
    {
76
        foreach ($sources as $sourceIdent => $source) {
77
            $this->addSource($sourceIdent, $source);
78
        }
79
        return $this;
80
    }
81
82
    /**
83
     * @return array
84
     */
85
    public function sources()
86
    {
87
        return $this->sources;
88
    }
89
90
    /**
91
     * @param string $sourceIdent The source identifier.
92
     * @param mixed  $source      The source data.
93
     * @return self
94
     */
95
    public function addSource($sourceIdent, $source)
96
    {
97
        $this->sources[$sourceIdent] = $source;
98
        return $this;
99
    }
100
101
    /**
102
     * @param string $sourceIdent The source identifier to get.
103
     * @return mixed
104
     */
105
    public function source($sourceIdent)
106
    {
107
        return $this->sources[$sourceIdent];
108
    }
109
110
    /**
111
     * @param string $defaultSource The default source identifier.
112
     * @throws InvalidArgumentException If the argument is not a string.
113
     * @return self
114
     */
115
    public function setDefaultSource($defaultSource)
116
    {
117
        if (!is_string($defaultSource)) {
0 ignored issues
show
introduced by
The condition is_string($defaultSource) is always true.
Loading history...
118
            throw new InvalidArgumentException(
119
                'Default source needs to be a string.'
120
            );
121
        }
122
        $this->defaultSource = $defaultSource;
123
        return $this;
124
    }
125
126
    /**
127
     * @return string
128
     */
129
    public function defaultSource()
130
    {
131
        return $this->defaultSource;
132
    }
133
}
134