ValidationException   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 68
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 7
lcom 1
cbo 0
dl 0
loc 68
ccs 17
cts 17
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 6 1
A getMessages() 0 14 3
A getJoinedMessages() 0 15 3
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