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\None;
8
use PhpOption\Option;
9
use PhpOption\Some;
10
 
11
final class PutenvAdapter implements AdapterInterface
12
{
13
    /**
14
     * Create a new putenv adapter instance.
15
     *
16
     * @return void
17
     */
18
    private function __construct()
19
    {
20
        //
21
    }
22
 
23
    /**
24
     * Create a new instance of the adapter, if it is available.
25
     *
26
     * @return \PhpOption\Option<\Dotenv\Repository\Adapter\AdapterInterface>
27
     */
28
    public static function create()
29
    {
30
        if (self::isSupported()) {
31
            /** @var \PhpOption\Option<AdapterInterface> */
32
            return Some::create(new self());
33
        }
34
 
35
        return None::create();
36
    }
37
 
38
    /**
39
     * Determines if the adapter is supported.
40
     *
41
     * @return bool
42
     */
43
    private static function isSupported()
44
    {
45
        return \function_exists('getenv') && \function_exists('putenv');
46
    }
47
 
48
    /**
49
     * Read an environment variable, if it exists.
50
     *
51
     * @param non-empty-string $name
52
     *
53
     * @return \PhpOption\Option<string>
54
     */
55
    public function read(string $name)
56
    {
57
        /** @var \PhpOption\Option<string> */
58
        return Option::fromValue(\getenv($name), false)->filter(static function ($value) {
59
            return \is_string($value);
60
        });
61
    }
62
 
63
    /**
64
     * Write to an environment variable, if possible.
65
     *
66
     * @param non-empty-string $name
67
     * @param string           $value
68
     *
69
     * @return bool
70
     */
71
    public function write(string $name, string $value)
72
    {
73
        \putenv("$name=$value");
74
 
75
        return true;
76
    }
77
 
78
    /**
79
     * Delete an environment variable, if possible.
80
     *
81
     * @param non-empty-string $name
82
     *
83
     * @return bool
84
     */
85
    public function delete(string $name)
86
    {
87
        \putenv($name);
88
 
89
        return true;
90
    }
91
}