Named::mark()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 2
nop 2
dl 0
loc 10
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Valid named
4
 * User: moyo
5
 * Date: 2018/6/4
6
 * Time: 3:25 PM
7
 */
8
9
namespace Carno\Validator\Valid;
10
11
use Carno\Validator\Chips\VWaits;
12
13
class Named
14
{
15
    use VWaits;
16
17
    /**
18
     * @var Rule[]
19
     */
20
    private $alias = [];
21
22
    /**
23
     * @param string $name
24
     * @return bool
25
     */
26
    public function has(string $name) : bool
27
    {
28
        return isset($this->alias[$name]);
29
    }
30
31
    /**
32
     * @param string $name
33
     * @return Rule
34
     */
35
    public function get(string $name) : Rule
36
    {
37
        return $this->alias[$name];
38
    }
39
40
    /**
41
     * @param string $expr
42
     * @param Executor $valid
43
     * @return Rule
44
     */
45
    public function mark(string $expr, Executor $valid) : Rule
46
    {
47
        $named = trim(substr($expr, 0, $fwp = strpos($expr, ' ')));
48
        $expr = trim(substr($expr, $fwp + 1));
49
50
        $this->alias[$named] = $rule = $valid->analyzing($expr);
51
52
        $this->waiting($named) && $this->resolving($named, $rule);
53
54
        return $rule;
55
    }
56
}
57