VWaits::resolved()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Valid waits for [group|named]
4
 * User: moyo
5
 * Date: 2018/6/5
6
 * Time: 2:13 PM
7
 */
8
9
namespace Carno\Validator\Chips;
10
11
use Closure;
12
13
trait VWaits
14
{
15
    /**
16
     * @var array
17
     */
18
    private $waits = [];
19
20
    /**
21
     * @param string $key
22
     * @param Closure $fn
23
     */
24
    public function wait(string $key, Closure $fn) : void
25
    {
26
        $this->waits[$key][] = $fn;
27
    }
28
29
    /**
30
     * @return bool
31
     */
32
    public function resolved() : bool
33
    {
34
        return empty($this->waits);
35
    }
36
37
    /**
38
     * @return array
39
     */
40
    public function incomplete() : array
41
    {
42
        return array_keys($this->waits);
43
    }
44
45
    /**
46
     * @param string $key
47
     * @return bool
48
     */
49
    private function waiting(string $key) : bool
50
    {
51
        return isset($this->waits[$key]);
52
    }
53
54
    /**
55
     * @param string $key
56
     * @param mixed ...$params
57
     */
58
    private function resolving(string $key, ...$params) : void
59
    {
60
        foreach ($this->waits[$key] ?? [] as $fn) {
61
            $fn(...$params);
62
        }
63
        unset($this->waits[$key]);
64
    }
65
}
66