GacelaConfigTransfer::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
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 19
dl 0
loc 21
ccs 4
cts 4
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
     * @param array<string,Closure> $factories
24 93
     * @param array<string,Closure> $protectedServices
25
     * @param array<string,string> $aliases
26
     * @param array<string,array<class-string,class-string|callable|object>> $contextualBindings
27
     */
28
    public function __construct(
29
        public readonly AppConfigBuilder $appConfigBuilder,
30
        public readonly SuffixTypesBuilder $suffixTypesBuilder,
31
        public readonly BindingsBuilder $bindingsBuilder,
32
        public readonly ?array $externalServices,
33
        public readonly ?bool $shouldResetInMemoryCache,
34
        public readonly ?bool $fileCacheEnabled,
35
        public readonly ?string $fileCacheDirectory,
36
        public readonly ?array $projectNamespaces,
37
        public readonly ?array $configKeyValues,
38
        public readonly ?array $genericListeners,
39
        public readonly ?array $specificListeners,
40
        public readonly ?bool $areEventListenersEnabled,
41 93
        public readonly ?array $gacelaConfigsToExtend,
42
        public readonly ?array $plugins,
43 93
        public readonly ?array $servicesToExtend,
44
        public readonly array $factories,
45 93
        public readonly array $protectedServices,
46
        public readonly array $aliases,
47
        public readonly array $contextualBindings,
48 93
    ) {
49
    }
50
}
51