Completed
Push — master ( fc63d4...58d04b )
by Yohan
06:35 queued 04:20
created

CallbackBuilder::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 5
crap 1
1
<?php
2
3
namespace Finite\Event\Callback;
4
5
use Finite\StateMachine\StateMachineInterface;
6
7
/**
8
 * Builds a Callback instance
9
 *
10
 * @author Yohan Giarelli <[email protected]>
11
 */
12
class CallbackBuilder
13
{
14
    /**
15
     * @var StateMachineInterface
16
     */
17
    private $stateMachine;
18
19
    /**
20
     * @var array
21
     */
22
    private $from;
23
24
    /**
25
     * @var array
26
     */
27
    private $to;
28
29
    /**
30
     * @var array
31
     */
32
    private $on;
33
34
    /**
35
     * @var callable
36
     */
37
    private $callable;
38
39
    /**
40
     * @param StateMachineInterface $sm
41
     * @param array                 $from
42
     * @param array                 $to
43
     * @param array                 $on
44
     * @param callable              $callable
45
     */
46 50
    public function __construct(StateMachineInterface $sm, array $from = array(), array $to = array(), array $on = array(), $callable = null)
47
    {
48 50
        $this->stateMachine = $sm;
49 50
        $this->from         = $from;
50 50
        $this->to           = $to;
51 50
        $this->on           = $on;
52 50
        $this->callable     = $callable;
53 50
    }
54
55
    /**
56
     * @param array $from
57
     *
58
     * @return CallbackBuilder
59
     */
60 15
    public function setFrom(array $from)
61
    {
62 15
        $this->from = $from;
63
64 15
        return $this;
65
    }
66
67
    /**
68
     * @param array $to
69
     *
70
     * @return CallbackBuilder
71
     */
72 15
    public function setTo(array $to)
73
    {
74 15
        $this->to = $to;
75
76 15
        return $this;
77
    }
78
79
    /**
80
     * @param array $on
81
     *
82
     * @return CallbackBuilder
83
     */
84 15
    public function setOn(array $on)
85
    {
86 15
        $this->on = $on;
87
88 15
        return $this;
89
    }
90
91
    /**
92
     * @param callable $callable
93
     *
94
     * @return CallbackBuilder
95
     */
96 40
    public function setCallable($callable)
97
    {
98 40
        $this->callable = $callable;
99
100 40
        return $this;
101
    }
102
103
    /**
104
     * @param string $from
105
     *
106
     * @return CallbackBuilder
107
     */
108 15
    public function addFrom($from)
109
    {
110 15
        $this->from[] = $from;
111
112 15
        return $this;
113
    }
114
115
    /**
116
     * @param string $to
117
     *
118
     * @return CallbackBuilder
119
     */
120 15
    public function addTo($to)
121
    {
122 15
        $this->to[] = $to;
123
124 15
        return $this;
125
    }
126
127
    /**
128
     * @param string $on
129
     *
130
     * @return CallbackBuilder
131
     */
132 10
    public function addOn($on)
133
    {
134 10
        $this->from[] = $on;
135
136 10
        return $this;
137
    }
138
139
    /**
140
     * @return Callback
141
     */
142 45
    public function getCallback()
143
    {
144 45
        return new Callback(
145 45
            new CallbackSpecification($this->stateMachine, $this->from, $this->to, $this->on),
146 45
            $this->callable
147 36
        );
148
    }
149
150
    /**
151
     * @param StateMachineInterface $sm
152
     * @param array                 $from
153
     * @param array                 $to
154
     * @param array                 $on
155
     * @param callable              $callable
156
     *
157
     * @return CallbackBuilder
158
     */
159 50
    public static function create(StateMachineInterface $sm, array $from = array(), array $to = array(), array $on = array(), $callable = null)
160
    {
161 50
        return new self($sm, $from, $to, $on, $callable);
162
    }
163
}
164