Passed
Push — master ( 8e4488...6a0d5f )
by 世昌
02:52
created

Runnable   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 66
rs 10
c 0
b 0
f 0
wmc 7

7 Methods

Rating   Name   Duplication   Size   Complexity  
A invoke() 0 2 1
A getName() 0 3 1
A newClassInstance() 0 3 1
A getTarget() 0 3 1
A __construct() 0 2 1
A run() 0 2 1
A isVaild() 0 3 1
1
<?php
2
namespace nebula\runnable;
3
4
use nebula\runnable\target\FileTarget;
5
use nebula\runnable\target\MethodTarget;
6
use nebula\runnable\target\ClosureTarget;
7
use nebula\runnable\target\TargetBuilder;
8
use nebula\runnable\target\FunctionTarget;
9
use nebula\runnable\target\RunnableTarget;
10
11
/**
12
 * 可执行命令表达式
13
 *
14
 */
15
class Runnable   {
16
17
    /**
18
     * 运行对象
19
     *
20
     * @var FunctionTarget|MethodTarget|FileTarget|ClosureTarget
21
     */
22
    protected $target;
23
24
    public function __construct($runnable, array $parameter=[]) {
25
        $this->target = TargetBuilder::build($runnable, $parameter);
26
    }
27
28
    /**
29
     * Get 运行对象
30
     *
31
     * @return  FunctionTarget|MethodTarget|FileTarget|ClosureTarget
32
     */ 
33
    public function getTarget()
34
    {
35
        return $this->target;
36
    }
37
38
    /**
39
     * 获取名字
40
     *
41
     * @return string
42
     */
43
    public function getName()
44
    {
45
        return $this->target->getName();
46
    }
47
48
    /**
49
     * 是否可执行
50
     *
51
     * @return boolean
52
     */
53
    public function isVaild():bool
54
    {
55
        return  $this->target->isVaild();
56
    }
57
58
    /**
59
     * 执行代码
60
     *
61
     * @param mixed ...$args
62
     * @return mixed
63
     */
64
    public function run(...$args) {
65
        return $this->invoke($args);
66
    }
67
68
    /**
69
     * 执行代码
70
     *
71
     * @param array $parameter
72
     * @return mixed
73
     */
74
    public function invoke(array $parameter) {
75
        return $this->target->invoke($parameter);
76
    }
77
78
    public static function newClassInstance(string $class)
79
    {
80
        return TargetBuilder::newClassInstance($class);
81
    }
82
}