Passed
Push — create-GacelaConfigTransfer-dt... ( 6b8dcc )
by Chema
03:59
created

GacelaConfigTransfer::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 0
c 1
b 0
f 0
nc 1
nop 15
dl 0
loc 17
ccs 1
cts 1
cp 1
crap 1
rs 10

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace Gacela\Framework\Bootstrap\Setup;
6
7
use Closure;
8
use Gacela\Framework\Config\GacelaConfigBuilder\AppConfigBuilder;
9
use Gacela\Framework\Config\GacelaConfigBuilder\BindingsBuilder;
10
use Gacela\Framework\Config\GacelaConfigBuilder\SuffixTypesBuilder;
11
12
final class GacelaConfigTransfer
13
{
14
    /**
15
     * @param array<string, class-string|object|callable> $externalServices
16
     * @param list<string> $projectNamespaces
17
     * @param array<string,mixed> $configKeyValues
18
     * @param list<callable> $genericListeners
19
     * @param array<class-string,list<callable>> $specificListeners
20
     * @param list<class-string> $gacelaConfigsToExtend
21
     * @param list<class-string|callable> $plugins
22
     * @param array<string,list<Closure>> $servicesToExtend
23
     */
24 93
    public function __construct(
25
        private AppConfigBuilder $appConfigBuilder,
26
        private SuffixTypesBuilder $suffixTypesBuilder,
27
        private BindingsBuilder $bindingsBuilder,
28
        private ?array $externalServices,
29
        private ?bool $shouldResetInMemoryCache,
30
        private ?bool $fileCacheEnabled,
31
        private ?string $fileCacheDirectory,
32
        private ?array $projectNamespaces,
33
        private ?array $configKeyValues,
34
        private ?array $genericListeners,
35
        private ?array $specificListeners,
36
        private ?bool $areEventListenersEnabled,
37
        private ?array $gacelaConfigsToExtend,
38
        private ?array $plugins,
39
        private ?array $servicesToExtend,
40
    ) {
41 93
    }
42
43 93
    public function getAppConfigBuilder(): AppConfigBuilder
44
    {
45 93
        return $this->appConfigBuilder;
46
    }
47
48 93
    public function getSuffixTypesBuilder(): SuffixTypesBuilder
49
    {
50 93
        return $this->suffixTypesBuilder;
51
    }
52
53 93
    public function getBindingsBuilder(): BindingsBuilder
54
    {
55 93
        return $this->bindingsBuilder;
56
    }
57
58
    /**
59
     * @return null|array<string, class-string|object|callable>
0 ignored issues
show
Documentation Bug introduced by
The doc comment null|array<string, class-string|object|callable> at position 6 could not be parsed: Unknown type name 'class-string' at position 6 in null|array<string, class-string|object|callable>.
Loading history...
60
     */
61 93
    public function getExternalServices(): ?array
62
    {
63 93
        return $this->externalServices;
64
    }
65
66 93
    public function getShouldResetInMemoryCache(): ?bool
67
    {
68 93
        return $this->shouldResetInMemoryCache;
69
    }
70
71 93
    public function getFileCacheEnabled(): ?bool
72
    {
73 93
        return $this->fileCacheEnabled;
74
    }
75
76 93
    public function getFileCacheDirectory(): ?string
77
    {
78 93
        return $this->fileCacheDirectory;
79
    }
80
81 93
    public function getProjectNamespaces(): ?array
82
    {
83 93
        return $this->projectNamespaces;
84
    }
85
86 93
    public function getConfigKeyValues(): ?array
87
    {
88 93
        return $this->configKeyValues;
89
    }
90
91 93
    public function getAreEventListenersEnabled(): ?bool
92
    {
93 93
        return $this->areEventListenersEnabled;
94
    }
95
96 93
    public function getGenericListeners(): ?array
97
    {
98 93
        return $this->genericListeners;
99
    }
100
101 93
    public function getSpecificListeners(): ?array
102
    {
103 93
        return $this->specificListeners;
104
    }
105
106
    /**
107
     * @return list<class-string>
108
     */
109 93
    public function getGacelaConfigsToExtend(): array
110
    {
111 93
        return $this->gacelaConfigsToExtend ?? [];
112
    }
113
114 93
    public function getPlugins(): ?array
115
    {
116 93
        return $this->plugins;
117
    }
118
119 93
    public function getServicesToExtend(): ?array
120
    {
121 93
        return $this->servicesToExtend;
122
    }
123
}
124