CanRenderValidator::isValid()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 12
ccs 0
cts 6
cp 0
rs 9.4285
cc 2
eloc 7
nc 2
nop 2
crap 6
1
<?php
2
/**
3
 * @copyright Interactive Solutions
4
 */
5
declare(strict_types=1);
6
7
namespace Roave\EmailTemplates\Validator;
8
9
use Roave\EmailTemplates\Service\Template\Engine\EngineInterface;
10
use Zend\Validator\AbstractValidator;
11
12
final class CanRenderValidator extends AbstractValidator
13
{
14
    const RENDERING_FAILED = 'roave:email-templates:cannot-render-template';
15
16
    /**
17
     * @var array
18
     */
19
    private $messageTemplates = [
20
        self::RENDERING_FAILED => 'Rendering failed: with %value%s',
21
    ];
22
23
    /**
24
     * @var EngineInterface
25
     */
26
    private $engine;
27
28
    public function __construct(EngineInterface $engine)
29
    {
30
        parent::__construct();
31
32
        $this->engine = $engine;
33
    }
34
35
    public function isValid($value, $context = null)
36
    {
37
        try {
38
            $this->engine->render($value, $context['parameters'] ?? []);
39
        } catch (\Throwable $e) {
40
            $this->error(self::RENDERING_FAILED, $e->getMessage());
41
42
            return false;
43
        }
44
45
        return true;
46
    }
47
}
48