Passed
Push — master ( 7c7fa2...d7cd6a )
by Michael
04:35
created

Link::setMetadata()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
declare(strict_types = 1);
3
4
namespace Mikemirten\Component\JsonApi\Mapper\Definition;
5
6
/**
7
 * Link definition
8
 *
9
 * @package Mapper\Definition
10
 */
11
class Link
12
{
13
    /**
14
     * Unique name of link-object inside of document or resource
15
     *
16
     * @var string
17
     */
18
    protected $name;
19
20
    /**
21
     * Name of repository supposed to contain link
22
     *
23
     * @var string
24
     */
25
    protected $repositoryName;
26
27
    /**
28
     * Name of resource inside of repository
29
     *
30
     * @var string
31
     */
32
    protected $linkName;
33
34
    /**
35
     * Parameters for link resolving
36
     *
37
     * @var array
38
     */
39
    protected $parameters = [];
40
41
    /**
42
     * Additional metadata
43
     *
44
     * @var array
45
     */
46
    protected $metadata = [];
47
48
    /**
49
     * Link constructor.
50
     *
51
     * @param string $name
52
     * @param string $repositoryName
53
     * @param string $linkName
54
     */
55 13
    public function __construct(string $name, string $repositoryName, string $linkName)
56
    {
57 13
        $this->name           = $name;
58 13
        $this->repositoryName = $repositoryName;
59 13
        $this->linkName       = $linkName;
60 13
    }
61
62
    /**
63
     * Get unique name of link-object inside of document or resource
64
     *
65
     * @return string
66
     */
67 9
    public function getName(): string
68
    {
69 9
        return $this->name;
70
    }
71
72
    /**
73
     * Get name of repository supposed to contain link
74
     *
75
     * @return string
76
     */
77 5
    public function getRepositoryName(): string
78
    {
79 5
        return $this->repositoryName;
80
    }
81
82
    /**
83
     * Get name of link inside of repository
84
     *
85
     * @return string
86
     */
87 5
    public function getLinkName(): string
88
    {
89 5
        return $this->linkName;
90
    }
91
92
    /**
93
     * Set parameters for link resolving (overwrites existing ones)
94
     *
95
     * @param array $parameters
96
     */
97 10
    public function setParameters(array $parameters)
98
    {
99 10
        $this->parameters = $parameters;
100 10
    }
101
102
    /**
103
     * Get parameters for link resolving
104
     *
105
     * @return array
106
     */
107 6
    public function getParameters(): array
108
    {
109 6
        return $this->parameters;
110
    }
111
112
    /**
113
     * Set metadata (overwrites existing one)
114
     *
115
     * @param array $metadata
116
     */
117 10
    public function setMetadata(array $metadata)
118
    {
119 10
        $this->metadata = $metadata;
120 10
    }
121
122
    /**
123
     * Get metadata
124
     *
125
     * @return array
126
     */
127 6
    public function getMetadata(): array
128
    {
129 6
        return $this->metadata;
130
    }
131
132
    /**
133
     * Merge a link into this one
134
     *
135
     * @param Link $link
136
     */
137 2
    public function merge(self $link)
138
    {
139 2
        $this->parameters = array_replace(
140 2
            $link->getParameters(),
141 2
            $this->parameters
142
        );
143
144 2
        $this->metadata = array_replace(
145 2
            $link->getMetadata(),
146 2
            $this->metadata
147
        );
148
    }
149
}