Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace Dotenv\Repository\Adapter;
6
 
7
use PhpOption\Option;
8
use PhpOption\Some;
9
 
10
final class EnvConstAdapter implements AdapterInterface
11
{
12
    /**
13
     * Create a new env const adapter instance.
14
     *
15
     * @return void
16
     */
17
    private function __construct()
18
    {
19
        //
20
    }
21
 
22
    /**
23
     * Create a new instance of the adapter, if it is available.
24
     *
25
     * @return \PhpOption\Option<\Dotenv\Repository\Adapter\AdapterInterface>
26
     */
27
    public static function create()
28
    {
29
        /** @var \PhpOption\Option<AdapterInterface> */
30
        return Some::create(new self());
31
    }
32
 
33
    /**
34
     * Read an environment variable, if it exists.
35
     *
36
     * @param non-empty-string $name
37
     *
38
     * @return \PhpOption\Option<string>
39
     */
40
    public function read(string $name)
41
    {
42
        /** @var \PhpOption\Option<string> */
43
        return Option::fromArraysValue($_ENV, $name)
44
            ->filter(static function ($value) {
45
                return \is_scalar($value);
46
            })
47
            ->map(static function ($value) {
48
                if ($value === false) {
49
                    return 'false';
50
                }
51
 
52
                if ($value === true) {
53
                    return 'true';
54
                }
55
 
56
                /** @psalm-suppress PossiblyInvalidCast */
57
                return (string) $value;
58
            });
59
    }
60
 
61
    /**
62
     * Write to an environment variable, if possible.
63
     *
64
     * @param non-empty-string $name
65
     * @param string           $value
66
     *
67
     * @return bool
68
     */
69
    public function write(string $name, string $value)
70
    {
71
        $_ENV[$name] = $value;
72
 
73
        return true;
74
    }
75
 
76
    /**
77
     * Delete an environment variable, if possible.
78
     *
79
     * @param non-empty-string $name
80
     *
81
     * @return bool
82
     */
83
    public function delete(string $name)
84
    {
85
        unset($_ENV[$name]);
86
 
87
        return true;
88
    }
89
}