Links::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 1
c 1
b 0
f 1
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
namespace Javis\JsonApi\Schema;
3
4
class Links
5
{
6
    /**
7
     * @var array
8
     */
9
    protected $links;
10
11
    /**
12
     * @param array $links
13
     * @return $this
14
     */
15
    public static function createFromArray(array $links)
16
    {
17
        $linkObjects = [];
18
        foreach ($links as $name => $value) {
19
            if (is_string($value)) {
20
                $linkObjects[$name] = Link::createFromString($value);
21
            } elseif (is_array($value)) {
22
                $linkObjects[$name] = Link::createFromArray($value);
23
            }
24
        }
25
26
        return new self($linkObjects);
27
    }
28
29
    /**
30
     * @param array $links
31
     */
32
    public function __construct(array $links)
33
    {
34
        $this->links = $links;
35
    }
36
37
    /**
38
     * @return array
39
     */
40
    public function toArray()
41
    {
42
        $links = [];
43
44
        foreach ($this->links as $rel => $link) {
45
            /** @var \Javis\JsonApi\Schema\Link $link */
46
            $links[$rel] = $link->toArray();
47
        }
48
49
        return $links;
50
    }
51
52
    /**
53
     * @return bool
54
     */
55
    public function hasSelf()
56
    {
57
        return $this->link("self") !== null;
58
    }
59
60
    /**
61
     * @return \Javis\JsonApi\Schema\Link
62
     */
63
    public function self()
64
    {
65
        return $this->link("self");
66
    }
67
68
    /**
69
     * @return bool
70
     */
71
    public function hasRelated()
72
    {
73
        return $this->link("related") !== null;
74
    }
75
76
    /**
77
     * @return \Javis\JsonApi\Schema\Link
78
     */
79
    public function related()
80
    {
81
        return $this->link("related");
82
    }
83
84
    /**
85
     * @return bool
86
     */
87
    public function hasFirst()
88
    {
89
        return $this->link("first") !== null;
90
    }
91
92
    /**
93
     * @return \Javis\JsonApi\Schema\Link
94
     */
95
    public function first()
96
    {
97
        return $this->link("first");
98
    }
99
100
    /**
101
     * @return bool
102
     */
103
    public function hasLast()
104
    {
105
        return $this->link("last") !== null;
106
    }
107
108
    /**
109
     * @return \Javis\JsonApi\Schema\Link
110
     */
111
    public function last()
112
    {
113
        return $this->link("last");
114
    }
115
116
    /**
117
     * @return bool
118
     */
119
    public function hasPrev()
120
    {
121
        return $this->link("prev") !== null;
122
    }
123
124
    /**
125
     * @return \Javis\JsonApi\Schema\Link
126
     */
127
    public function prev()
128
    {
129
        return $this->link("prev");
130
    }
131
132
    /**
133
     * @return bool
134
     */
135
    public function hasNext()
136
    {
137
        return $this->link("next") !== null;
138
    }
139
140
    /**
141
     * @return \Javis\JsonApi\Schema\Link
142
     */
143
    public function next()
144
    {
145
        return $this->link("next");
146
    }
147
148
    /**
149
     * @param $name
150
     * @return bool
151
     */
152
    public function hasLink($name)
153
    {
154
        return $this->hasLink($name) !== null;
155
    }
156
157
    /**
158
     * @param $name
159
     * @return mixed $links
160
     */
161
    public function link($name)
162
    {
163
        return isset($this->links[$name]) ? $this->links[$name] : null;
164
    }
165
166
    /**
167
     * @return bool
168
     */
169
    public function hasLinks()
170
    {
171
        return empty($this->links) === false;
172
    }
173
174
    /**
175
     * @return array
176
     */
177
    public function links()
178
    {
179
        return $this->links;
180
    }
181
}
182