Passed
Branch v1.4.0 (c6dc92)
by Wanderson
01:17
created

Data::load()   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\Formats\Arr;
4
5
use Win\Singleton\SingletonTrait;
6
7
/**
8
 * Armazena Dados
9
 */
10
class Data implements DataInterface
11
{
12
	use SingletonTrait;
13
14
	/** @var mixed[] */
15
	protected $data = [];
16
17
	/**
18
	 * Define todos os valores
19
	 * @param mixed[] $values
20
	 */
21
	public function load($values)
22
	{
23
		$this->data = $values;
24
	}
25
26
	/**
27
	 * Retorna todas as variáveis
28
	 * @return mixed[]
29
	 */
30
	public function all()
31
	{
32
		return $this->data;
33
	}
34
35
	/** Exclui todos os dados */
36
	public function clear()
37
	{
38
		$this->data = [];
39
	}
40
41
	/**
42
	 * Define um valor
43
	 * @param string $key
44
	 * @param mixed $value
45
	 */
46
	public function set($key, $value)
47
	{
48
		$p = &$this->data;
49
		$keys = explode('.', $key);
50
		foreach ($keys as $k) {
51
			$p = &$p[$k];
52
		}
53
		if ($value) {
54
			$p = $value;
55
		}
56
	}
57
58
	/**
59
	 * Adiciona um valor ao array
60
	 * @param string $key
61
	 * @param mixed $value
62
	 */
63
	public function add($key, $value)
64
	{
65
		$values = $this->getArray($key);
66
		array_push($values, $value);
67
		$this->set($key, $values);
68
	}
69
70
	/**
71
	 * Retorna um valor
72
	 * @param string $key
73
	 * @param mixed $default Valor default, caso a $key não exista
74
	 */
75
	public function get($key, $default = null)
76
	{
77
		$data = $this->data;
78
		$keys = explode('.', $key);
79
		foreach ($keys as $k) {
80
			if (is_array($data) && array_key_exists($k, $data)) {
81
				$data = $data[$k];
82
			} else {
83
				return $default;
84
			}
85
		}
86
87
		return $data;
88
	}
89
90
	/**
91
	 * Retorna sempre um array
92
	 * @param string $key
93
	 * @return mixed
94
	 */
95
	private function getArray($key)
96
	{
97
		$values = $this->get($key, []);
98
		if (!is_array($values) && $this->has($key)) {
99
			$values = [$this->get($key)];
100
		}
101
102
		return $values;
103
	}
104
105
	/** @param string $key */
106
	public function delete($key)
107
	{
108
		unset($this->data[$key]);
109
	}
110
111
	/** @return bool */
112
	public function has($key)
113
	{
114
		return !is_null($this->get($key, null));
115
	}
116
}
117