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

ConfigFactory   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Test Coverage

Coverage 94.12%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 14
c 1
b 0
f 0
dl 0
loc 26
ccs 16
cts 17
cp 0.9412
rs 10
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A create() 0 21 2
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