Completed
Branch master (755019)
by Oliver
12:48 queued 05:47
created

Transition::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1.008

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
ccs 4
cts 5
cp 0.8
rs 9.4286
cc 1
eloc 4
nc 1
nop 3
crap 1.008
1
<?php
2
3
namespace Metabor\Statemachine;
4
5
use MetaborStd\Event\EventInterface;
6
use MetaborStd\Statemachine\ConditionInterface;
7
use MetaborStd\Statemachine\StateInterface;
8
use MetaborStd\Statemachine\TransitionInterface;
9
10
/**
11
 * @author Oliver Tischlinger
12
 */
13
class Transition implements TransitionInterface
14
{
15
    /**
16
     * @var StateInterface
17
     */
18
    private $targetState;
19
20
    /**
21
     * @var string
22
     */
23
    private $eventName;
24
25
    /**
26
     * @var ConditionInterface
27
     */
28
    private $condition;
29
30
    /**
31
     * @param StateInterface     $targetState
32
     * @param string             $eventName
33
     * @param ConditionInterface $condition
34
     */
35 7
    public function __construct(StateInterface $targetState, $eventName = null, ConditionInterface $condition = null)
36
    {
37 7
        $this->targetState = $targetState;
38 7
        $this->eventName = $eventName;
39 7
        $this->condition = $condition;
40
    }
41
42
    /**
43
     * @see MetaborStd\Statemachine.TransitionInterface::getTargetState()
44
     */
45 1
    public function getTargetState()
46
    {
47 1
        return $this->targetState;
48
    }
49
50
    /**
51
     * @see MetaborStd\Statemachine.TransitionInterface::getEventName()
52
     */
53 3
    public function getEventName()
54
    {
55 3
        return $this->eventName;
56
    }
57
58
    /**
59
     * @see MetaborStd\Statemachine.TransitionInterface::getConditionName()
60
     */
61 6
    public function getConditionName()
62
    {
63 2
        if ($this->condition) {
64
            return $this->condition->getName();
65
        }
66 6
    }
67
68
    /**
69
     * @see MetaborStd\Statemachine.TransitionInterface::isActive()
70
     */
71 2
    public function isActive($subject, \ArrayAccess $context, EventInterface $event = null)
72
    {
73
        if ($event) {
74
            $result = ($event->getName() == $this->eventName);
75
        } else {
76
            $result = is_null($this->eventName);
77 2
        }
78
        if ($this->condition) {
79
            $result = $result && $this->condition->checkCondition($subject, $context);
80
        }
81
82
        return $result;
83
    }
84
85
    /**
86
     * @return \MetaborStd\Statemachine\ConditionInterface
87
     */
88 3
    public function getCondition()
89
    {
90 3
        return $this->condition;
91
    }
92
}
93