Completed
Push — master ( 25a367...4e273e )
by Adrian
03:50
created

HasLabelTrait::getLabel()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 2
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 2
eloc 2
nc 2
nop 0
crap 2
1
<?php
2
namespace Sirius\Input\Traits;
3
4
use Sirius\Input\Specs;
5
use Sirius\Input\AttributesContainer;
6
7
trait HasLabelTrait
8
{
9
10 2
    protected function ensureLabelAttributes()
11
    {
12 2
        if (!isset($this[Specs::LABEL_ATTRIBUTES])) {
13 2
            $this[Specs::LABEL_ATTRIBUTES] = new AttributesContainer();
14
        }
15 2
    }
16
17
    /**
18
     * Retrieves the label's text
19
     *
20
     * @return string null
21
     */
22 6
    public function getLabel()
23
    {
24 6
        return isset($this[Specs::LABEL]) ? $this[Specs::LABEL] : null;
25
    }
26
27
    /**
28
     * Sets the label's text
29
     *
30
     * @param string $label
31
     *
32
     * @return self
33
     */
34 2
    public function setLabel($label)
35
    {
36 2
        $this[Specs::LABEL] = $label;
37
38 2
        return $this;
39
    }
40
41
    /**
42
     * Retrieve all of the label's attributes
43
     *
44
     * @return mixed
45
     */
46 1
    public function getLabelAttributes()
47
    {
48 1
        $this->ensureLabelAttributes();
49
50 1
        return $this[Specs::LABEL_ATTRIBUTES]->getAll();
51
    }
52
53
    /**
54
     * Sets multiple attributes for the label
55
     *
56
     * @param array $attrs
57
     *
58
     * @return HasLabelTrait
0 ignored issues
show
Comprehensibility Bug introduced by
The return type HasLabelTrait is a trait, and thus cannot be used for type-hinting in PHP. Maybe consider adding an interface and use that for type-hinting?

In PHP traits cannot be used for type-hinting as they do not define a well-defined structure. This is because any class that uses a trait can rename that trait’s methods.

If you would like to return an object that has a guaranteed set of methods, you could create a companion interface that lists these methods explicitly.

Loading history...
59
     */
60 1
    public function setLabelAttributes($attrs)
61
    {
62 1
        $this->ensureLabelAttributes();
63 1
        $this[Specs::LABEL_ATTRIBUTES]->set($attrs);
64
65 1
        return $this;
66
    }
67
68
    /**
69
     * Retrieve an attribute from the label
70
     *
71
     * @param string $attr
72
     *
73
     * @return mixed
74
     */
75 2
    public function getLabelAttribute($attr)
76
    {
77 2
        $this->ensureLabelAttributes();
78
79 2
        return $this[Specs::LABEL_ATTRIBUTES]->get($attr);
80
    }
81
82
    /**
83
     * Set/Unset a label attribute
84
     *
85
     * @param string $attr
86
     * @param mixed|null $value
87
     *
88
     * @return self
89
     */
90 1
    public function setLabelAttribute($attr, $value = null)
91
    {
92 1
        $this->ensureLabelAttributes();
93 1
        $this->ensureLabelAttributes();
94 1
        $this[Specs::LABEL_ATTRIBUTES]->set($attr, $value);
95
96 1
        return $this;
97
    }
98
99
    /**
100
     * Adds a CSS class to the label's "class" attribute
101
     *
102
     * @param string $class
103
     *
104
     * @return self
105
     */
106 1
    public function addLabelClass($class)
107
    {
108 1
        $this->ensureLabelAttributes();
109 1
        $this[Specs::LABEL_ATTRIBUTES]->addClass($class);
110
111 1
        return $this;
112
    }
113
114
    /**
115
     * Removes a CSS class from the label's "class" attribute
116
     *
117
     * @param string $class
118
     *
119
     * @return self
120
     */
121 1
    public function removeLabelClass($class)
122
    {
123 1
        $this->ensureLabelAttributes();
124 1
        $this[Specs::LABEL_ATTRIBUTES]->removeClass($class);
125
126 1
        return $this;
127
    }
128
129
    /**
130
     * Toggles a CSS class to the label's "class" attribute
131
     *
132
     * @param
133
     *            $class
134
     *
135
     * @return self
136
     */
137 1
    public function toggleLabelClass($class)
138
    {
139 1
        $this->ensureLabelAttributes();
140 1
        $this[Specs::LABEL_ATTRIBUTES]->toggleClass($class);
141
142 1
        return $this;
143
    }
144
145
    /**
146
     * Checks if the label has a CSS class on the "class" attribute
147
     *
148
     * @param
149
     *            $class
150
     *
151
     * @return bool
152
     */
153 1
    public function hasLabelClass($class)
154
    {
155 1
        $this->ensureLabelAttributes();
156
157 1
        return $this[Specs::LABEL_ATTRIBUTES]->hasClass($class);
158
    }
159
}
160