createStrategy()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 11
c 1
b 0
f 0
nc 1
nop 4
dl 0
loc 21
ccs 12
cts 12
cp 1
crap 1
rs 9.9
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Lamoda\MultiEnv\Factory;
6
7
use Lamoda\MultiEnv\FileReader\DotEnvV2FileReaderAdapter;
8
use Lamoda\MultiEnv\FileReader\FileNameResolver\FileNameResolver;
9
use Lamoda\MultiEnv\FileReader\PathResolver\PathResolver;
10
use Lamoda\MultiEnv\Formatter\SuffixAppendFormatter;
11
use Lamoda\MultiEnv\HostDetector\CliArgsBasedHostDetector;
12
use Lamoda\MultiEnv\HostDetector\Factory\GetOptAdapterFactory;
13
use Lamoda\MultiEnv\HostDetector\FirstSuccessfulHostDetector;
14
use Lamoda\MultiEnv\HostDetector\ServerHeadersBasedHostDetector;
15
use Lamoda\MultiEnv\Strategy\FileBasedEnvResolvingStrategy;
16
use Lamoda\MultiEnv\Strategy\RawEnvResolvingStrategy;
17
18
/**
19
 * @deprecated This factory must be implemented in the client code. It will be removed in version 1.0
20
 */
21
class FileBasedEnvResolvingStrategyFactory
22
{
23 2
    public static function createStrategy(
24
        string $serverHeaderToSearch,
25
        string $cliArgToSearch,
26
        string $envFileName,
27
        string $basePathToEnvFile
28
    ): FileBasedEnvResolvingStrategy {
29 2
        @trigger_error(
30 2
            sprintf('Factory %s is deprecated. It must be implemented in the client code. It will be removed in version 1.0', self::class),
31 2
            E_USER_DEPRECATED
32
        );
33
34 2
        return new FileBasedEnvResolvingStrategy(
35 2
            new FirstSuccessfulHostDetector([
36 2
                new ServerHeadersBasedHostDetector($serverHeaderToSearch),
37 2
                new CliArgsBasedHostDetector($cliArgToSearch, GetOptAdapterFactory::build())
38
            ]),
39 2
            new DotEnvV2FileReaderAdapter(
40 2
                new PathResolver($basePathToEnvFile, new SuffixAppendFormatter(DIRECTORY_SEPARATOR)),
41 2
                new FileNameResolver($envFileName)
42
            ),
43 2
            new RawEnvResolvingStrategy()
44
        );
45
    }
46
}
47