ValidationException::getJoinedMessages()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

Changes 0
Metric Value
cc 3
nc 3
nop 0
dl 0
loc 15
ccs 7
cts 7
cp 1
crap 3
rs 9.7666
c 0
b 0
f 0
1
<?php
2
3
namespace ValueObject\Exception;
4
5
use Symfony\Component\Validator\ConstraintViolation;
6
use Symfony\Component\Validator\ConstraintViolationList;
7
8
/**
9
 * Our custom exception which mean that VO is invalid.
10
 *
11
 * The main purpose on this exception
12
 * is to store validation errors
13
 * and provide simple way to obtain this errors further.
14
 */
15
class ValidationException extends \Exception
16
{
17
    /**
18
     * This array contains validation errors (violations).
19
     *
20
     * @var array $violations Validation errors (violations). By default it's empty array.
21
     */
22
    private $violations;
23
24
    /**
25
     * Constructor.
26
     *
27
     * @param array $violations Array with validation errors (violations).
28
     */
29 6
    public function __construct(array $violations)
30
    {
31 6
        $this->violations = $violations;
32
33 6
        parent::__construct('ValueObject validation failed.');
34 6
    }
35
36
    /**
37
     * Provides array with all validation errors (violations).
38
     *
39
     * IMPORTANT error message structure:
40
     * Each invalid parameter have array with error messages.
41
     *
42
     * @return array Array with errors messages.
43
     */
44 5
    public function getMessages()
45
    {
46 5
        $messages = [];
47
48
        /** @var ConstraintViolationList $violationList */
49 5
        foreach ($this->violations as $paramName => $violationList) {
50
            /** @var ConstraintViolation $violation */
51 5
            foreach ($violationList as $violation) {
52 5
                $messages[$paramName][] = $violation->getMessage();
53
            }
54
        }
55
56 5
        return $messages;
57
    }
58
59
    /**
60
     * Provides array with all validation errors (violations).
61
     *
62
     * IMPORTANT error message structure:
63
     * Each invalid parameter have string with joined all error messages into single message.
64
     *
65
     * @return array Array with errors messages.
66
     */
67 1
    public function getJoinedMessages()
68
    {
69 1
        $messages = [];
70
71
        /** @var ConstraintViolationList $violationList */
72 1
        foreach ($this->violations as $paramName => $violationList) {
73
            /** @var ConstraintViolation $violation */
74 1
            foreach ($violationList as $violation) {
75 1
                $messages[$paramName][] = $violation->getMessage();
76
            }
77 1
            $messages[$paramName] = implode(' ', $messages[$paramName]);
78
        }
79
80 1
        return $messages;
81
    }
82
}
83