1cc09977656859054a2a3db134b9a6cc213ad983
[GitHub/WoltLab/WCF.git] /
1 <?php
2 /**
3 * PHP-DI
4 *
5 * @link http://php-di.org/
6 * @copyright Matthieu Napoli (http://mnapoli.fr/)
7 * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
8 */
9
10 namespace DI\Definition;
11
12 use DI\Scope;
13
14 /**
15 * Defines a reference to an environment variable, with fallback to a default
16 * value if the environment variable is not defined.
17 *
18 * @author James Harris <james.harris@icecave.com.au>
19 */
20 class EnvironmentVariableDefinition implements CacheableDefinition
21 {
22 /**
23 * Entry name
24 * @var string
25 */
26 private $name;
27
28 /**
29 * The name of the environment variable
30 * @var string
31 */
32 private $variableName;
33
34 /**
35 * Whether or not the environment variable definition is optional
36 *
37 * If true and the environment variable given by $variableName has not been
38 * defined, $defaultValue is used.
39 *
40 * @var boolean
41 */
42 private $isOptional;
43
44 /**
45 * The default value to use if the environment variable is optional and not provided
46 * @var mixed
47 */
48 private $defaultValue;
49
50 /**
51 * @var string|null
52 */
53 private $scope;
54
55 /**
56 * @param string $name Entry name
57 * @param string $variableName The name of the environment variable
58 * @param boolean $isOptional Whether or not the environment variable definition is optional
59 * @param mixed $defaultValue The default value to use if the environment variable is optional and not provided
60 */
61 public function __construct($name, $variableName, $isOptional = false, $defaultValue = null)
62 {
63 $this->name = $name;
64 $this->variableName = $variableName;
65 $this->isOptional = $isOptional;
66 $this->defaultValue = $defaultValue;
67 }
68
69 /**
70 * @return string Entry name
71 */
72 public function getName()
73 {
74 return $this->name;
75 }
76
77 /**
78 * @return string The name of the environment variable
79 */
80 public function getVariableName()
81 {
82 return $this->variableName;
83 }
84
85 /**
86 * @return boolean Whether or not the environment variable definition is optional
87 */
88 public function isOptional()
89 {
90 return $this->isOptional;
91 }
92
93 /**
94 * @return mixed The default value to use if the environment variable is optional and not provided
95 */
96 public function getDefaultValue()
97 {
98 return $this->defaultValue;
99 }
100
101 /**
102 * @param string $scope
103 */
104 public function setScope($scope)
105 {
106 $this->scope = $scope;
107 }
108
109 /**
110 * {@inheritdoc}
111 */
112 public function getScope()
113 {
114 return $this->scope ?: Scope::SINGLETON;
115 }
116 }