Completed
Branch master (5acf81)
by Steevan
04:21
created

AttrTrait::addAttr()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 7
nc 2
nop 2
1
<?php
2
3
namespace steevanb\SymfonyFormOptionsBuilder\Behavior;
4
5
trait AttrTrait
6
{
7
    use OptionAccessorsTrait;
8
9
    /**
10
     * @param array $attr
11
     * @return $this
12
     * @link http://symfony.com/doc/current/reference/forms/types/form.html#attr
13
     */
14
    public function setAttr(array $attr)
15
    {
16
        return $this->setOption('attr', $attr);
17
    }
18
19
    /**
20
     * @param string $name
21
     * @param mixed $value
22
     * @return $this
23
     */
24
    public function addAttr($name, $value)
25
    {
26
        $attr = $this->getAttr();
27
        if (is_array($attr) === false) {
28
            $attr = array();
29
        }
30
        $attr[$name] = $value;
31
        $this->setAttr($attr);
32
33
        return $this;
34
    }
35
36
    /**
37
     * @param string|null $name
38
     * @return array|mixed
39
     */
40
    public function getAttr($name = null)
41
    {
42
        $attr = $this->getOption('attr');
43
44
        if (empty($name)) {
45
            return $attr;
46
        }
47
        if (is_array($attr) === false) {
48
            return Option::DEFAULT_VALUE;
49
        }
50
51
        $key = array_search($name, $attr);
52
53
        return ($key === false) ? Option::DEFAULT_VALUE : $attr[$key];
54
    }
55
56
    /**
57
     * @param string $name
58
     * @return $this
59
     */
60
    public function removeAttr($name)
61
    {
62
        $attr = $this->getOption('attr');
63
        if (is_array($attr) === false) {
64
            return $this;
65
        }
66
        $key = array_search($name, $attr);
67
        if ($key !== false) {
68
            unset($attr[$key]);
69
        }
70
71
        return $this->setAttr($attr);
72
    }
73
}
74