Passed
Push — master ( 2b2bf8...bf8929 )
by Smoren
02:54
created

CheckBuilder::withDependencies()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Smoren\Validator\Factories;
6
7
use Smoren\Validator\Checks\Check;
8
use Smoren\Validator\Interfaces\CheckInterface;
9
10
class CheckBuilder
11
{
12
    /**
13
     * @var string
14
     */
15
    protected string $name;
16
    /**
17
     * @var callable
18
     */
19
    protected $predicate;
20
    /**
21
     * @var array<string, mixed>
22
     */
23
    protected array $params = [];
24
    /**
25
     * @var array<string, callable>
26
     */
27
    protected array $calculatedParams = [];
28
    /**
29
     * @var array<CheckInterface>
30
     */
31
    protected array $dependencies = [];
32
33
    /**
34
     * @param string $name
35
     * @return self
36
     */
37 292
    public static function create(string $name): self
38
    {
39 292
        return new self($name);
40
    }
41
42
    /**
43
     * @return CheckInterface
44
     */
45 292
    public function build(): CheckInterface
46
    {
47 292
        return new Check(
48 292
            $this->name,
49 292
            $this->predicate,
50 292
            $this->params,
51 292
            $this->calculatedParams,
52 292
            $this->dependencies
53 292
        );
54
    }
55
56
    /**
57
     * @param callable $predicate
58
     * @return $this
59
     */
60 292
    public function withPredicate(callable $predicate): self
61
    {
62 292
        $this->predicate = $predicate;
63 292
        return $this;
64
    }
65
66
    /**
67
     * @param array<string, mixed> $params
68
     * @return $this
69
     */
70 140
    public function withParams(array $params): self
71
    {
72 140
        $this->params = $params;
73 140
        return $this;
74
    }
75
76
    /**
77
     * @param array<string, callable> $calculatedParams
78
     * @return $this
79
     */
80 3
    public function withCalculatedParams(array $calculatedParams): self
81
    {
82 3
        $this->calculatedParams = $calculatedParams;
83 3
        return $this;
84
    }
85
86
    /**
87
     * @param array<CheckInterface> $dependencies
88
     * @return $this
89
     */
90 51
    public function withDependencies(array $dependencies): self
91
    {
92 51
        $this->dependencies = $dependencies;
93 51
        return $this;
94
    }
95
96
    /**
97
     * @param string $name
98
     */
99 292
    private function __construct(string $name)
100
    {
101 292
        $this->name = $name;
102 292
        $this->predicate = fn () => true;
103
    }
104
}
105