NotSpecification   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 36
rs 10
c 0
b 0
f 0
wmc 3
lcom 1
cbo 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 8 1
A validate() 0 10 2
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