BusContext   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 88
Duplicated Lines 7.95 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 11
lcom 1
cbo 3
dl 7
loc 88
ccs 26
cts 26
cp 1
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 9 1
A send() 0 6 2
A sendLocal() 7 7 2
A publish() 0 6 2
A subscribe() 0 6 2
A unsubscribe() 0 6 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
namespace PSB\Core;
3
4
5
use PSB\Core\Pipeline\BusOperations;
6
use PSB\Core\Pipeline\PipelineRootStageContext;
7
8
class BusContext implements BusContextInterface
9
{
10
    /**
11
     * @var PipelineRootStageContext
12
     */
13
    private $rootContext;
14
15
    /**
16
     * @var BusOperations
17
     */
18
    private $busOperations;
19
20
    /**
21
     * @var OutgoingOptionsFactory
22
     */
23
    private $outgoingOptionsFactory;
24
25
    /**
26
     * @param PipelineRootStageContext $rootContext
27
     * @param BusOperations            $busOperations
28
     * @param OutgoingOptionsFactory   $outgoingOptionsFactory
29
     */
30 10
    public function __construct(
31
        PipelineRootStageContext $rootContext,
32
        BusOperations $busOperations,
33
        OutgoingOptionsFactory $outgoingOptionsFactory
34
    ) {
35 10
        $this->rootContext = $rootContext;
36 10
        $this->busOperations = $busOperations;
37 10
        $this->outgoingOptionsFactory = $outgoingOptionsFactory;
38 10
    }
39
40
    /**
41
     * @param object           $message
42
     * @param SendOptions|null $options
43
     */
44 3
    public function send($message, SendOptions $options = null)
45
    {
46 3
        $options = $options ?: $this->outgoingOptionsFactory->createSendOptions();
47
48 3
        $this->busOperations->send($message, $options, $this->rootContext);
49 3
    }
50
51
    /**
52
     * @param object           $message
53
     * @param SendOptions|null $options
54
     */
55 1 View Code Duplication
    public function sendLocal($message, SendOptions $options = null)
56
    {
57 1
        $options = $options ?: $this->outgoingOptionsFactory->createSendOptions();
58 1
        $options->routeToLocalEndpointInstance();
59
60 1
        $this->send($message, $options);
61 1
    }
62
63
    /**
64
     * @param object              $message
65
     * @param PublishOptions|null $options
66
     */
67 2
    public function publish($message, PublishOptions $options = null)
68
    {
69 2
        $options = $options ?: $this->outgoingOptionsFactory->createPublishOptions();
70
71 2
        $this->busOperations->publish($message, $options, $this->rootContext);
72 2
    }
73
74
    /**
75
     * @param string                $eventFqcn
76
     * @param SubscribeOptions|null $options
77
     */
78 2
    public function subscribe($eventFqcn, SubscribeOptions $options = null)
79
    {
80 2
        $options = $options ?: $this->outgoingOptionsFactory->createSubscribeOptions();
81
82 2
        $this->busOperations->subscribe($eventFqcn, $options, $this->rootContext);
83 2
    }
84
85
    /**
86
     * @param string                  $eventFqcn
87
     * @param UnsubscribeOptions|null $options
88
     */
89 2
    public function unsubscribe($eventFqcn, UnsubscribeOptions $options = null)
90
    {
91 2
        $options = $options ?: $this->outgoingOptionsFactory->createUnsubscribeOptions();
92
93 2
        $this->busOperations->unsubscribe($eventFqcn, $options, $this->rootContext);
94 2
    }
95
}
96