Test Setup Failed
Pull Request — master (#445)
by Rustam
15:39
created

Env::load()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 11
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 15
rs 9.9
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App;
6
7
use Dotenv\Dotenv;
8
use Yiisoft\VarDumper\VarDumper;
9
10
final class Env
11
{
12
    private static ?array $values = null;
13
14
    private const FILE_NAME = '.env.php';
15
16
    public static function get(string $name, string $default = null): ?string
17
    {
18
        self::ensureValuesLoaded();
19
20
        return isset(self::$values[$name]) ? (string)self::$values[$name] : getenv($default) ?? $default;
21
    }
22
23
    public static function getBoolean(string $name, bool $default = false): bool
24
    {
25
        self::ensureValuesLoaded();
26
27
        return \filter_var(self::$values[$name] ?? null, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ?? $default;
28
    }
29
30
    public static function getInteger(string $name, int $default = 0): int
31
    {
32
        self::ensureValuesLoaded();
33
34
        return \filter_var(self::$values[$name] ?? null, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE) ?? $default;
35
    }
36
37
    public static function load(): void
38
    {
39
        $dotenv = Dotenv::createArrayBacked(dirname(__DIR__));
40
        $values = $dotenv->load();
41
        $values = VarDumper::create($values)->export();
42
        $content = <<<PHP
43
<?php
44
45
declare(strict_types=1);
46
47
return $values;
48
49
PHP;
50
51
        file_put_contents(dirname(__DIR__) . '/runtime/' . self::FILE_NAME, $content, LOCK_EX);
52
    }
53
54
    private static function ensureValuesLoaded(): void
55
    {
56
        if (self::$values === null) {
57
            $values = require dirname(__DIR__) . '/runtime/' . self::FILE_NAME;
58
            self::$values = $values + $_ENV + $_SERVER;
59
        }
60
    }
61
}
62