createSubscribers()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 64

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 41
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 64
ccs 41
cts 41
cp 1
rs 8.7853
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
/*
4
 * This file is part of the Ivory Google Map package.
5
 *
6
 * (c) Eric GELOEN <[email protected]>
7
 *
8
 * For the full copyright and license information, please read the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Ivory\GoogleMap\Helper\Builder;
13
14
use Ivory\GoogleMap\Helper\Collector\Place\Base\AutocompleteBoundCollector;
15
use Ivory\GoogleMap\Helper\Collector\Place\Base\AutocompleteCoordinateCollector;
16
use Ivory\GoogleMap\Helper\Collector\Place\Event\AutocompleteDomEventCollector;
17
use Ivory\GoogleMap\Helper\Collector\Place\Event\AutocompleteDomEventOnceCollector;
18
use Ivory\GoogleMap\Helper\Collector\Place\Event\AutocompleteEventCollector;
19
use Ivory\GoogleMap\Helper\Collector\Place\Event\AutocompleteEventOnceCollector;
20
use Ivory\GoogleMap\Helper\PlaceAutocompleteHelper;
21
use Ivory\GoogleMap\Helper\Renderer\Base\BoundRenderer;
22
use Ivory\GoogleMap\Helper\Renderer\Base\CoordinateRenderer;
23
use Ivory\GoogleMap\Helper\Renderer\Event\DomEventOnceRenderer;
24
use Ivory\GoogleMap\Helper\Renderer\Event\DomEventRenderer;
25
use Ivory\GoogleMap\Helper\Renderer\Event\EventOnceRenderer;
26
use Ivory\GoogleMap\Helper\Renderer\Event\EventRenderer;
27
use Ivory\GoogleMap\Helper\Renderer\Html\JavascriptTagRenderer;
28
use Ivory\GoogleMap\Helper\Renderer\Html\TagRenderer;
29
use Ivory\GoogleMap\Helper\Renderer\Place\AutocompleteContainerRenderer;
30
use Ivory\GoogleMap\Helper\Renderer\Place\AutocompleteHtmlRenderer;
31
use Ivory\GoogleMap\Helper\Renderer\Place\AutocompleteRenderer;
32
use Ivory\GoogleMap\Helper\Renderer\Utility\CallbackRenderer;
33
use Ivory\GoogleMap\Helper\Renderer\Utility\RequirementRenderer;
34
use Ivory\GoogleMap\Helper\Subscriber\Place\AutocompleteContainerSubscriber;
35
use Ivory\GoogleMap\Helper\Subscriber\Place\AutocompleteHtmlSubscriber;
36
use Ivory\GoogleMap\Helper\Subscriber\Place\AutocompleteInitSubscriber;
37
use Ivory\GoogleMap\Helper\Subscriber\Place\AutocompleteJavascriptSubscriber;
38
use Ivory\GoogleMap\Helper\Subscriber\Place\AutocompleteSubscriber;
39
use Ivory\GoogleMap\Helper\Subscriber\Place\Base\AutocompleteBaseSubscriber;
40
use Ivory\GoogleMap\Helper\Subscriber\Place\Base\AutocompleteBoundSubscriber;
41
use Ivory\GoogleMap\Helper\Subscriber\Place\Base\AutocompleteCoordinateSubscriber;
42
use Ivory\GoogleMap\Helper\Subscriber\Place\Event\AutocompleteDomEventOnceSubscriber;
43
use Ivory\GoogleMap\Helper\Subscriber\Place\Event\AutocompleteDomEventSubscriber;
44
use Ivory\GoogleMap\Helper\Subscriber\Place\Event\AutocompleteEventOnceSubscriber;
45
use Ivory\GoogleMap\Helper\Subscriber\Place\Event\AutocompleteEventSubscriber;
46
use Ivory\GoogleMap\Helper\Subscriber\Place\Event\AutocompleteSimpleEventSubscriber;
47
48
/**
49
 * @author GeLo <[email protected]>
50
 */
51
class PlaceAutocompleteHelperBuilder extends AbstractJavascriptHelperBuilder
52
{
53
    /**
54
     * @return PlaceAutocompleteHelper
55
     */
56 4
    public function build()
57
    {
58 4
        return new PlaceAutocompleteHelper($this->createEventDispatcher());
59
    }
60
61
    /**
62
     * {@inheritdoc}
63
     */
64 4
    protected function createSubscribers()
65
    {
66 4
        $formatter = $this->getFormatter();
67 4
        $jsonBuilder = $this->getJsonBuilder();
68
69
        // Base collectors
70 4
        $boundCollector = new AutocompleteBoundCollector();
71 4
        $coordinateCollector = new AutocompleteCoordinateCollector($boundCollector);
72
73
        // Event collectors
74 4
        $domEventCollector = new AutocompleteDomEventCollector();
75 4
        $domEventOnceCollector = new AutocompleteDomEventOnceCollector();
76 4
        $eventCollector = new AutocompleteEventCollector();
77 4
        $eventOnceCollector = new AutocompleteEventOnceCollector();
78
79
        // Base renderers
80 4
        $coordinateRenderer = new CoordinateRenderer($formatter);
81 4
        $boundRenderer = new BoundRenderer($formatter);
82
83
        // Event renderers
84 4
        $domEventOnceRenderer = new DomEventOnceRenderer($formatter);
85 4
        $domEventRenderer = new DomEventRenderer($formatter);
86 4
        $eventOnceRenderer = new EventOnceRenderer($formatter);
87 4
        $eventRenderer = new EventRenderer($formatter);
88
89
        // Html renderers
90 4
        $tagRenderer = new TagRenderer($formatter);
91 4
        $autocompleteHtmlRenderer = new AutocompleteHtmlRenderer($formatter, $tagRenderer);
92 4
        $javascriptTagRenderer = new JavascriptTagRenderer($formatter, $tagRenderer);
93
94
        // Utility renderers
95 4
        $callbackRenderer = new CallbackRenderer($formatter);
96 4
        $requirementRenderer = new RequirementRenderer($formatter);
97
98
        // Autocomplete renderers
99 4
        $autocompleteContainerRenderer = new AutocompleteContainerRenderer($formatter, $jsonBuilder);
100 4
        $autocompleteRenderer = new AutocompleteRenderer($formatter, $jsonBuilder, $requirementRenderer);
101
102 4
        return array_merge([
103
            // Base
104 4
            new AutocompleteBaseSubscriber($formatter),
105 4
            new AutocompleteCoordinateSubscriber($formatter, $coordinateCollector, $coordinateRenderer),
106 4
            new AutocompleteBoundSubscriber($formatter, $boundCollector, $boundRenderer),
107
108
            // Event
109 4
            new AutocompleteDomEventOnceSubscriber($formatter, $domEventOnceCollector, $domEventOnceRenderer),
110 4
            new AutocompleteDomEventSubscriber($formatter, $domEventCollector, $domEventRenderer),
111 4
            new AutocompleteEventOnceSubscriber($formatter, $eventOnceCollector, $eventOnceRenderer),
112 4
            new AutocompleteEventSubscriber($formatter),
113 4
            new AutocompleteSimpleEventSubscriber($formatter, $eventCollector, $eventRenderer),
114
115
            // Autocomplete
116 4
            new AutocompleteContainerSubscriber($formatter, $autocompleteContainerRenderer),
117 4
            new AutocompleteHtmlSubscriber($formatter, $autocompleteHtmlRenderer),
118 4
            new AutocompleteInitSubscriber($formatter),
119 4
            new AutocompleteJavascriptSubscriber(
120 4
                $formatter,
121 3
                $autocompleteRenderer,
122 3
                $callbackRenderer,
123 3
                $javascriptTagRenderer
124
            ),
125 4
            new AutocompleteSubscriber($formatter, $autocompleteRenderer),
126 4
        ], parent::createSubscribers());
127
    }
128
}
129