NotSpecification::validate()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 7
nc 2
nop 0
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace BenTools\Specification\Logical;
4
5
use BenTools\Specification\Exception\UnmetSpecificationException;
6
use BenTools\Specification\Specification;
7
use function BenTools\Specification\reject;
8
9
final class NotSpecification extends Specification
10
{
11
    /**
12
     * @var Specification
13
     */
14
    private $specification;
15
16
    /**
17
     * NotSpecification constructor.
18
     *
19
     * @param Specification $specification
20
     * @param null|string   $name
21
     */
22
    protected function __construct(
23
        Specification $specification,
24
        ?string $name
25
    ) {
26
    
27
        $this->specification = $specification;
28
        $this->label = $name;
29
    }
30
31
    /**
32
     * @inheritDoc
33
     */
34
    public function validate(): void
35
    {
36
        $innerSpecification = $this->specification;
37
        try {
38
            $innerSpecification->validate();
39
        } catch (UnmetSpecificationException $e) {
40
            return;
41
        }
42
        reject($this);
43
    }
44
}
45