InputValidationException::getMessages()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
0 ignored issues
show
Coding Style introduced by
End of line character is invalid; expected "\n" but found "\r\n"
Loading history...
2
3
namespace AdvancedLearning\InputValidator\Exceptions;
4
/**
5
 * An exception thrown when a model fails validation
6
 */
7
class InputValidationException extends \InvalidArgumentException
8
{
9
    /**
10
     * Array of messages, should be key value pair of fieldname => message
11
     *
12
     * @var array
13
     */
14
    protected $messages;
15
16
    /**
17
     * FormValidationException constructor.
18
     *
19
     * @param array          $messages Key/value pairs of fieldname => message.
20
     * @param integer        $code     Error code.
21
     * @param Exception|null $previous Passed through to Exception.
22
     */
23
    public function __construct(array $messages = [], $code = 0, Exception $previous = null)
24
    {
25
        $this->messages = $messages;
26
27
        // combine messages into a single message
28
        $message = '';
29
        $separator = '';
30
31
        foreach (array_values($messages) as $fieldMessages) {
32
            foreach ($fieldMessages as $m) {
33
                $message .= $separator . $m;
34
                $separator = '. ';
35
            }
36
        }
37
38
        parent::__construct($message, $code, $previous);
39
    }
40
41
    /**
42
     * Get the array of messages
43
     *
44
     * @return array
45
     */
46
    public function getMessages()
47
    {
48
        return $this->messages;
49
    }
50
51
    /**
52
     * Get one error message for each field.
53
     *
54
     * @return array
55
     */
56
    public function getFieldMessages()
57
    {
58
        $messages = [];
59
60
        foreach ($this->messages as $field => $fieldMessages) {
61
            // combine messages into a single message
62
            $message = '';
63
            $separator = '';
64
65
            foreach ($fieldMessages as $m) {
66
                $message .= $separator . $m;
67
                $separator = '. ';
68
            }
69
70
            $messages[$field] = $message;
71
        }
72
73
        return $messages;
74
    }
75
}
76