Passed
Pull Request — master (#5)
by Jan-Marten
05:27
created

OperationHandler::detachVisitor()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 2
c 1
b 0
f 0
nc 2
nop 1
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 2
rs 10
1
<?php
2
/**
3
 * Copyright MediaCT. All rights reserved.
4
 * https://www.mediact.nl
5
 */
6
7
namespace Johmanx10\Transaction;
8
9
use Johmanx10\Transaction\Visitor\OperationVisitorAwareInterface;
10
use Johmanx10\Transaction\Visitor\OperationVisitorInterface;
11
12
class OperationHandler implements
13
    OperationHandlerInterface,
14
    OperationVisitorAwareInterface
15
{
16
    /** @var OperationVisitorInterface[] */
17
    private $visitors = [];
18
19
    /**
20
     * Handle the given operations.
21
     *
22
     * @param OperationInterface ...$operations
23
     *
24
     * @return void
25
     */
26 1
    public function handle(OperationInterface ...$operations): void
27
    {
28 1
        $transaction = new Transaction(...$operations);
29 1
        $transaction->commit(...array_values($this->visitors));
30 1
    }
31
32
    /**
33
     * Attach operation visitors to the current container.
34
     *
35
     * @param OperationVisitorInterface ...$visitors
36
     *
37
     * @return void
38
     */
39 1
    public function attachVisitor(OperationVisitorInterface ...$visitors): void
40
    {
41 1
        foreach ($visitors as $visitor) {
42 1
            $this->visitors[spl_object_hash($visitor)] = $visitor;
43
        }
44 1
    }
45
46
    /**
47
     * Detach operation visitors to the current container.
48
     *
49
     * @param OperationVisitorInterface ...$visitors
50
     *
51
     * @return void
52
     */
53 1
    public function detachVisitor(OperationVisitorInterface ...$visitors): void
54
    {
55 1
        foreach ($visitors as $visitor) {
56 1
            unset($this->visitors[spl_object_hash($visitor)]);
57
        }
58 1
    }
59
}
60