Blame view

public/vendor/illuminate/support/Env.php 2.63 KB
86143e36f   Андрей Ларионов   Коммит вторник
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
  <?php
  
  namespace Illuminate\Support;
  
  use Dotenv\Repository\Adapter\EnvConstAdapter;
  use Dotenv\Repository\Adapter\PutenvAdapter;
  use Dotenv\Repository\Adapter\ServerConstAdapter;
  use Dotenv\Repository\RepositoryBuilder;
  use PhpOption\Option;
  
  class Env
  {
      /**
       * Indicates if the putenv adapter is enabled.
       *
       * @var bool
       */
      protected static $putenv = true;
  
      /**
       * The environment repository instance.
       *
       * @var \Dotenv\Repository\RepositoryInterface|null
       */
      protected static $repository;
  
      /**
       * Enable the putenv adapter.
       *
       * @return void
       */
      public static function enablePutenv()
      {
          static::$putenv = true;
          static::$repository = null;
      }
  
      /**
       * Disable the putenv adapter.
       *
       * @return void
       */
      public static function disablePutenv()
      {
          static::$putenv = false;
          static::$repository = null;
      }
  
      /**
       * Get the environment repository instance.
       *
       * @return \Dotenv\Repository\RepositoryInterface
       */
      public static function getRepository()
      {
          if (static::$repository === null) {
              $adapters = array_merge(
                  [new EnvConstAdapter, new ServerConstAdapter],
                  static::$putenv ? [new PutenvAdapter] : []
              );
  
              static::$repository = RepositoryBuilder::create()
                  ->withReaders($adapters)
                  ->withWriters($adapters)
                  ->immutable()
                  ->make();
          }
  
          return static::$repository;
      }
  
      /**
       * Gets the value of an environment variable.
       *
       * @param  string  $key
       * @param  mixed  $default
       * @return mixed
       */
      public static function get($key, $default = null)
      {
          return Option::fromValue(static::getRepository()->get($key))
              ->map(function ($value) {
                  switch (strtolower($value)) {
                      case 'true':
                      case '(true)':
                          return true;
                      case 'false':
                      case '(false)':
                          return false;
                      case 'empty':
                      case '(empty)':
                          return '';
                      case 'null':
                      case '(null)':
                          return;
                  }
  
                  if (preg_match('/\A([\'"])(.*)\1\z/', $value, $matches)) {
                      return $matches[2];
                  }
  
                  return $value;
              })
              ->getOrCall(function () use ($default) {
                  return value($default);
              });
      }
  }