Completed
Push — devel ( adbcf9...17c44c )
by Alex
03:43 queued 01:44
created

IncomingPipelineFeature   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 45
Duplicated Lines 100 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 76.47%

Importance

Changes 0
Metric Value
wmc 2
lcom 0
cbo 5
dl 45
loc 45
ccs 13
cts 17
cp 0.7647
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A describe() 4 4 1
A setup() 23 23 1

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\Pipeline;
3
4
5
use PSB\Core\Feature\Feature;
6
use PSB\Core\MessageHandlerRegistry;
7
use PSB\Core\ObjectBuilder\BuilderInterface;
8
use PSB\Core\Pipeline\Incoming\IncomingContextFactory;
9
use PSB\Core\Pipeline\Incoming\InvokeHandlerTerminator;
10
use PSB\Core\Pipeline\Incoming\LoadHandlersConnector;
11
use PSB\Core\Util\Settings;
12
13 View Code Duplication
class IncomingPipelineFeature extends Feature
14
{
15
16
    /**
17
     * Method will always be executed and should be used to determine whether to enable or disable the feature,
18
     * configure default settings, configure dependencies, configure prerequisites and register startup tasks.
19
     */
20 1
    public function describe()
21
    {
22 1
        $this->enableByDefault();
23 1
    }
24
25
    /**
26
     * Method is called if all defined conditions are met and the feature is marked as enabled.
27
     * Use this method to configure and initialize all required components for the feature like
28
     * the steps in the pipeline or the instances/factories in the container.
29
     *
30
     * @param Settings              $settings
31
     * @param BuilderInterface      $builder
32
     * @param PipelineModifications $pipelineModifications
33
     */
34 1
    public function setup(
35
        Settings $settings,
36
        BuilderInterface $builder,
37
        PipelineModifications $pipelineModifications
38
    ) {
39 1
        $pipelineModifications->registerStep(
40 1
            'LoadHandlersConnector',
41 1
            LoadHandlersConnector::class,
42
            function () use ($builder) {
43
                return new LoadHandlersConnector(
44
                    $builder->build(MessageHandlerRegistry::class),
45
                    $builder->build(IncomingContextFactory::class)
46
                );
47 1
            }
48
        );
49 1
        $pipelineModifications->registerStep(
50 1
            'InvokeHandlerTerminator',
51 1
            InvokeHandlerTerminator::class,
52
            function () use ($builder) {
53
                return new InvokeHandlerTerminator();
54 1
            }
55
        );
56 1
    }
57
}
58