Passed
Push — master ( 2ebd73...dae4ba )
by Sergei
11:56
created

ConfigFactory::create()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 21
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 2.0008

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 13
c 1
b 0
f 0
nc 2
nop 3
dl 0
loc 21
ccs 16
cts 17
cp 0.9412
crap 2.0008
rs 9.8333
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Yii\Runner;
6
7
use ErrorException;
8
use Yiisoft\Config\Config;
9
use Yiisoft\Config\ConfigPaths;
10
use Yiisoft\Config\Modifier\RecursiveMerge;
11
use Yiisoft\Config\Modifier\ReverseMerge;
12
13
/**
14
 * Creates a Config instance for a given environment.
15
 */
16
final class ConfigFactory
17
{
18
    /**
19
     * @throws ErrorException If the environment does not exist.
20
     */
21 8
    public static function create(ConfigPaths $paths, ?string $environment, string $paramsGroup = 'params'): Config
22
    {
23 8
        $paramsGroups = ['params'];
24 8
        if ($paramsGroup !== 'params') {
25
            $paramsGroups[] = $paramsGroup;
26
        }
27
28 8
        $eventGroups = [
29 8
            'events',
30 8
            'events-web',
31 8
            'events-console',
32 8
        ];
33
34 8
        return new Config(
35 8
            $paths,
36 8
            $environment,
37 8
            [
38 8
                ReverseMerge::groups(...$eventGroups),
39 8
                RecursiveMerge::groups(...$paramsGroups, ...$eventGroups),
40 8
            ],
41 8
            $paramsGroup,
42 8
        );
43
    }
44
}
45