CallableAction::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 3
dl 0
loc 6
rs 9.4285
c 0
b 0
f 0
1
<?php
2
namespace Buttress\IRC\Action;
3
4
use Buttress\IRC\Connection\ConnectionInterface;
5
use Buttress\IRC\Message\MessageInterface;
6
7
class CallableAction implements ActionInterface
8
{
9
10
    protected $messageCallable;
11
    protected $connectCallable;
12
    protected $tickCallable;
13
14
    /**
15
     * @param callable $message_callable
16
     * @param callable $connect_callable
17
     * @param callable $tick_callable
18
     */
19
    public function __construct($message_callable, $connect_callable, $tick_callable)
20
    {
21
        $this->messageCallable = $message_callable;
22
        $this->connectCallable = $connect_callable;
23
        $this->tickCallable = $tick_callable;
24
    }
25
26
    public function handleConnect(ConnectionInterface $connection)
27
    {
28
        $callable = $this->connectCallable;
29
        if ($callable && is_callable($callable)) {
30
            $callable($connection);
31
        }
32
    }
33
34
    public function handleMessage(MessageInterface $message)
35
    {
36
        $callable = $this->messageCallable;
37
        if ($callable && is_callable($callable)) {
38
            $callable($message);
39
        }
40
    }
41
42
    /**
43
     * Handle repeated function calls
44
     * @param ConnectionInterface $connection
45
     * @return void
46
     */
47
    public function handleTick(ConnectionInterface $connection)
48
    {
49
        $callable = $this->tickCallable;
50
        if ($callable && is_callable($callable)) {
51
            $callable();
52
        }
53
    }
54
55
}
56