TraitErrors   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 10
dl 0
loc 60
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A addError() 0 6 2
A hasErrors() 0 3 1
A getFirstErrors() 0 9 3
A resetErrors() 0 6 2
A getErrors() 0 6 2
1
<?php
2
3
namespace WebComplete\core\utils\traits;
4
5
/**
6
 * Class TraitErrors
7
 */
8
trait TraitErrors
9
{
10
    protected $errors = [];
11
12
    /**
13
     * @param string $code
14
     * @param $error
15
     */
16
    public function addError($code, $error)
17
    {
18
        if (!isset($this->errors[$code])) {
19
            $this->errors[$code] = [];
20
        }
21
        $this->errors[$code][] = $error;
22
    }
23
24
    /**
25
     * @param null|string $code
26
     * @return bool
27
     */
28
    public function hasErrors($code = null): bool
29
    {
30
        return \count($this->getErrors($code)) > 0;
31
    }
32
33
    /**
34
     * @param null|string $code
35
     * @return array
36
     */
37
    public function getErrors($code = null): array
38
    {
39
        if ($code !== null) {
40
            return $this->errors[$code] ?? [];
41
        }
42
        return $this->errors;
43
    }
44
45
    /**
46
     * @return array
47
     */
48
    public function getFirstErrors(): array
49
    {
50
        $result = [];
51
        foreach ($this->getErrors() as $field => $errors) {
52
            if ($errors) {
53
                $result[$field] = \reset($errors);
54
            }
55
        }
56
        return $result;
57
    }
58
59
    /**
60
     * @param null|string $code
61
     */
62
    public function resetErrors($code = null)
63
    {
64
        if ($code !== null) {
65
            unset($this->errors[$code]);
66
        } else {
67
            $this->errors = [];
68
        }
69
    }
70
}
71