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

Runnable::getTarget()   A

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
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
}