Passed
Push — master ( bb9a04...3de7c0 )
by Wanderson
02:24
created

ArrayDotTrait::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Win\Common\Traits;
4
5
/**
6
 * Armazena Dados
7
 */
8
trait ArrayDotTrait
9
{
10
	/**
11
	 * Dados que estão armazenados
12
	 * @var mixed[]
13
	 */
14
	protected $data = [];
15
16
	/**
17
	 * Retorna todos os valores
18
	 * @return mixed[]
19
	 */
20
	public function all()
21
	{
22
		return $this->data;
23
	}
24
25
	/** Exclui todos os dados */
26
	public function clear()
27
	{
28
		$this->data = [];
29
	}
30
31
	/**
32
	 * Define um valor
33
	 * @param string $key
34
	 * @param mixed $value
35
	 */
36
	public function set($key, $value)
37
	{
38
		$p = &$this->data;
39
		$keys = explode('.', $key);
40
		foreach ($keys as $k) {
41
			$p = &$p[$k];
42
		}
43
		if ($value) {
44
			$p = $value;
45
		}
46
	}
47
48
	/**
49
	 * Adiciona um valor ao array
50
	 * @param string $key
51
	 * @param mixed $value
52
	 */
53
	public function add($key, $value)
54
	{
55
		$values = $this->getArray($key);
56
		array_push($values, $value);
57
		$this->set($key, $values);
58
	}
59
60
	/**
61
	 * Retorna um valor
62
	 * @param string $key
63
	 * @param mixed $default Valor default, caso a $key não exista
64
	 */
65
	public function get($key, $default = null)
66
	{
67
		$data = $this->data;
68
		$keys = explode('.', $key);
69
		foreach ($keys as $k) {
70
			if (is_array($data) && array_key_exists($k, $data)) {
71
				$data = $data[$k];
72
			} else {
73
				return $default;
74
			}
75
		}
76
77
		return $data;
78
	}
79
80
	/**
81
	 * Retorna sempre um array
82
	 * @param string $key
83
	 * @return mixed
84
	 */
85
	private function getArray($key)
86
	{
87
		$values = $this->get($key, []);
88
		if (!is_array($values) && $this->has($key)) {
89
			$values = [$this->get($key)];
90
		}
91
92
		return $values;
93
	}
94
95
	/**
96
	 * Remove o valor
97
	 * @param string $key
98
	 */
99
	public function delete($key)
100
	{
101
		unset($this->data[$key]);
102
	}
103
104
	/**
105
	 * Retorna TRUE se $key existe
106
	 * @param string $key
107
	 * @return bool
108
	 */
109
	public function has($key)
110
	{
111
		return !is_null($this->get($key, null));
112
	}
113
114
	/**
115
	 * Retorna TRUE se estiver vazio
116
	 * @return bool
117
	 */
118
	public function isEmpty()
119
	{
120
		return empty($this->data);
121
	}
122
}
123