Fields::offsetExists()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
namespace AmoCRM\Helpers;
4
5
/**
6
 * Class Fields
7
 *
8
 * Хелпер для хранения идентификаторов полей amoCRM API
9
 *
10
 * @package AmoCRM\Helpers
11
 * @author dotzero <[email protected]>
12
 * @link http://www.dotzero.ru/
13
 * @link https://github.com/dotzero/amocrm-php
14
 *
15
 * For the full copyright and license information, please view the LICENSE
16
 * file that was distributed with this source code.
17
 */
18
class Fields implements \IteratorAggregate, \ArrayAccess, \Countable
19
{
20
    /**
21
     * @var array Массив ключей и идентификаторов полей
22
     */
23
    private $fields = [];
24
25
    /**
26
     * Магический сеттер для поля
27
     *
28
     * @param mixed $name Название поля
29
     * @param mixed $value Значение поля
30
     */
31 1
    public function __set($name, $value)
32
    {
33 1
        $this->offsetSet($name, $value);
34 1
    }
35
36
    /**
37
     * Магический геттер для поля
38
     *
39
     * @param mixed $name Название поля
40
     * @return mixed Значение поля
41
     */
42 1
    public function __get($name)
43
    {
44 1
        return $this->offsetGet($name);
45
    }
46
47
    /**
48
     * Сеттер для поля
49
     *
50
     * @param mixed $key Название поля
51
     * @param mixed $value Значение поля
52
     */
53 6
    public function add($key, $value = null)
54
    {
55 6
        $this->offsetSet($key, $value);
56 6
    }
57
58
    /**
59
     * Геттер для поля
60
     *
61
     * @param mixed $key Название поля
62
     * @return mixed Значение поля
63
     */
64 1
    public function get($key)
65
    {
66 1
        return $this->offsetGet($key);
67
    }
68
69
    /**
70
     * Определяет, существует ли заданное смещение (ключ)
71
     *
72
     * @link http://php.net/manual/en/arrayaccess.offsetexists.php
73
     * @param mixed $offset Смещение (ключ) для проверки
74
     * @return boolean Возвращает true или false
75
     */
76 2
    public function offsetExists($offset)
77
    {
78 2
        return isset($this->fields[$offset]);
79
    }
80
81
    /**
82
     * Возвращает заданное смещение (ключ)
83
     *
84
     * @link http://php.net/manual/en/arrayaccess.offsetget.php
85
     * @param mixed $offset Смещение (ключ) для возврата
86
     * @return mixed Значение смещения (ключа)
87
     */
88 1
    public function offsetGet($offset)
89
    {
90 1
        if (isset($this->fields[$offset])) {
91 1
            return $this->fields[$offset];
92
        }
93
94 1
        return null;
95
    }
96
97
    /**
98
     * Устанавливает заданное смещение (ключ)
99
     *
100
     * @link http://php.net/manual/en/arrayaccess.offsetset.php
101
     * @param mixed $offset Смещение (ключ), которому будет присваиваться значение
102
     * @param mixed $value Значение для присвоения
103
     */
104 6
    public function offsetSet($offset, $value)
105
    {
106 6
        $this->fields[$offset] = $value;
107 6
    }
108
109
    /**
110
     * Удаляет смещение
111
     *
112
     * @link http://php.net/manual/en/arrayaccess.offsetunset.php
113
     * @param mixed $offset Смещение для удаления
114
     */
115 1
    public function offsetUnset($offset)
116
    {
117 1
        if (isset($this->fields[$offset])) {
118 1
            unset($this->fields[$offset]);
119 1
        }
120 1
    }
121
122
    /**
123
     * Возвращает внешний итератор
124
     *
125
     * @link http://php.net/manual/en/iteratoraggregate.getiterator.php
126
     * @return \Traversable Экземпляр объекта, использующего Iterator или Traversable
127
     */
128 1
    public function getIterator()
129
    {
130 1
        return new \ArrayIterator($this->fields);
131
    }
132
133
    /**
134
     * Количество элементов объекта
135
     *
136
     * @link http://php.net/manual/en/countable.count.php
137
     * @return int Количество элементов объекта
138
     */
139 2
    public function count()
140
    {
141 2
        return count($this->fields);
142
    }
143
}
144