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 ApacheAdapter implements AdapterInterface
12
{
13
    /**
14
     * Create a new apache 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
     * This happens if PHP is running as an Apache module.
42
     *
43
     * @return bool
44
     */
45
    private static function isSupported()
46
    {
47
        return \function_exists('apache_getenv') && \function_exists('apache_setenv');
48
    }
49
 
50
    /**
51
     * Read an environment variable, if it exists.
52
     *
53
     * @param non-empty-string $name
54
     *
55
     * @return \PhpOption\Option<string>
56
     */
57
    public function read(string $name)
58
    {
59
        /** @var \PhpOption\Option<string> */
60
        return Option::fromValue(apache_getenv($name))->filter(static function ($value) {
61
            return \is_string($value) && $value !== '';
62
        });
63
    }
64
 
65
    /**
66
     * Write to an environment variable, if possible.
67
     *
68
     * @param non-empty-string $name
69
     * @param string           $value
70
     *
71
     * @return bool
72
     */
73
    public function write(string $name, string $value)
74
    {
75
        return apache_setenv($name, $value);
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
        return apache_setenv($name, '');
88
    }
89
}