Configuration::getConfigTreeBuilder()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 103
Code Lines 93

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 103
rs 8.2857
c 0
b 0
f 0
cc 1
eloc 93
nc 1
nop 0

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
namespace Cmobi\RabbitmqBundle\DependencyInjection;
4
5
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
6
use Symfony\Component\Config\Definition\ConfigurationInterface;
7
8
class Configuration implements ConfigurationInterface
9
{
10
    public function getConfigTreeBuilder()
11
    {
12
        $tree = new TreeBuilder();
13
        $rootNode = $tree->root('cmobi_rabbitmq');
14
        $rootNode->fixXmlConfig('connection')
15
            ->children()
16
                ->arrayNode('connections')
17
                    ->useAttributeAsKey('key')
18
                    ->prototype('array')
19
                        ->children()
20
                            ->scalarNode('host')->defaultValue('localhost')->end()
21
                            ->scalarNode('port')->defaultValue(5672)->end()
22
                            ->scalarNode('user')->defaultValue('guest')->end()
23
                            ->scalarNode('password')->defaultValue('guest')->end()
24
                            ->scalarNode('vhost')->defaultValue('/')->end()
25
                            ->booleanNode('lazy')->defaultFalse()->end()
26
                            ->scalarNode('connection_timeout')->defaultValue(3)->end()
27
                            ->scalarNode('read_write_timeout')->defaultValue(3)->end()
28
                            ->arrayNode('ssl_context')
29
                                ->useAttributeAsKey('key')
30
                                ->canBeUnset()
31
                                ->prototype('variable')->end()
32
                            ->end()
33
                            ->booleanNode('keepalive')->defaultFalse()->info('requires php-amqplib v2.4.1+ and PHP5.4+')->end()
34
                            ->scalarNode('heartbeat')->defaultValue(0)->info('requires php-amqplib v2.4.1+')->end()
35
                        ->end()
36
                    ->end()
37
                ->end()
38
            ->end()
39
        ;
40
41
        $rootNode->fixXmlConfig('rpc_server')
42
            ->children()
43
                ->arrayNode('rpc_servers')
44
                    ->useAttributeAsKey('key')
45
                    ->prototype('array')
46
                        ->children()
47
                            ->arrayNode('queue')
48
                                ->children()
49
                                    ->scalarNode('name')->end()
50
                                    ->scalarNode('connection')->defaultValue('default')->end()
51
                                    ->scalarNode('basic_qos')->defaultValue(1)->end()
52
                                    ->booleanNode('durable')->defaultTrue()->end()
53
                                    ->booleanNode('auto_delete')->defaultFalse()->end()
54
                                    ->variableNode('arguments')->defaultValue([])->end()
55
                                ->end()
56
                            ->end()
57
                            ->scalarNode('service')->defaultValue('cmobi_rabbitmq.message.handler')->end()
58
                            ->scalarNode('jobs')->defaultValue(1)->end()
59
                        ->end()
60
                    ->end()
61
                ->end()
62
            ->end()
63
        ;
64
65
        $rootNode->fixXmlConfig('worker')
66
            ->children()
67
                ->arrayNode('workers')
68
                    ->useAttributeAsKey('key')
69
                    ->prototype('array')
70
                        ->children()
71
                            ->arrayNode('queue')
72
                                ->children()
73
                                    ->scalarNode('name')->end()
74
                                    ->scalarNode('connection')->defaultValue('default')->end()
75
                                    ->scalarNode('basic_qos')->defaultValue(1)->end()
76
                                    ->variableNode('arguments')->defaultValue([])->end()
77
                                ->end()
78
                            ->end()
79
                            ->scalarNode('service')->defaultValue('cmobi_rabbitmq.message.handler')->end()
80
                            ->scalarNode('jobs')->defaultValue(1)->end()
81
                        ->end()
82
                    ->end()
83
                ->end()
84
            ->end()
85
        ;
86
87
        $rootNode->fixXmlConfig('subscriber')
88
            ->children()
89
                ->arrayNode('subscribers')
90
                    ->useAttributeAsKey('key')
91
                    ->prototype('array')
92
                        ->children()
93
                            ->arrayNode('queue')
94
                                ->children()
95
                                    ->scalarNode('name')->end()
96
                                    ->scalarNode('exchange')->end()
97
                                    ->scalarNode('connection')->defaultValue('default')->end()
98
                                    ->scalarNode('basic_qos')->defaultValue(1)->end()
99
                                    ->scalarNode('exchange_type')->defaultValue('topic')->end()
100
                                    ->variableNode('arguments')->defaultValue([])->end()
101
                                ->end()
102
                            ->end()
103
                            ->scalarNode('service')->defaultValue('cmobi_rabbitmq.message.handler')->end()
104
                            ->scalarNode('jobs')->defaultValue(1)->end()
105
                        ->end()
106
                    ->end()
107
                ->end()
108
            ->end()
109
        ;
110
111
        return $tree;
112
    }
113
}
114