PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 3.11.2
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v3.11.2
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / addons / inc / Dependencies / DI / Definition / Resolver / EnvironmentVariableResolver.php
cookiebot / addons / inc / Dependencies / DI / Definition / Resolver Last commit date
AliasResolver.php 5 years ago ArrayResolver.php 5 years ago DecoratorResolver.php 5 years ago DefinitionResolver.php 5 years ago EnvironmentVariableResolver.php 5 years ago FactoryResolver.php 5 years ago InstanceInjector.php 5 years ago ObjectCreator.php 5 years ago ParameterResolver.php 5 years ago ResolverDispatcher.php 5 years ago StringResolver.php 5 years ago ValueResolver.php 5 years ago
EnvironmentVariableResolver.php
95 lines
1 <?php
2 /**
3 * PHP-DI
4 *
5 * @link http://mnapoli.github.com/PHP-DI/
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 Cybot\Dependencies\DI\Definition\Resolver;
11
12 use Cybot\Dependencies\DI\Definition\Definition;
13 use Cybot\Dependencies\DI\Definition\EnvironmentVariableDefinition;
14 use Cybot\Dependencies\DI\Definition\Exception\DefinitionException;
15 use Cybot\Dependencies\DI\Definition\Helper\DefinitionHelper;
16
17 /**
18 * Resolves a environment variable definition to a value.
19 *
20 * @author James Harris <james.harris@icecave.com.au>
21 */
22 class EnvironmentVariableResolver implements DefinitionResolver
23 {
24 /**
25 * @var DefinitionResolver
26 */
27 private $definitionResolver;
28
29 /**
30 * @var callable
31 */
32 private $variableReader;
33
34 public function __construct(DefinitionResolver $definitionResolver, $variableReader = 'getenv')
35 {
36 $this->definitionResolver = $definitionResolver;
37 $this->variableReader = $variableReader;
38 }
39
40 /**
41 * Resolve an environment variable definition to a value.
42 *
43 * @param EnvironmentVariableDefinition $definition
44 *
45 * {@inheritdoc}
46 */
47 public function resolve(Definition $definition, array $parameters = [])
48 {
49 $this->assertIsEnvironmentVariableDefinition($definition);
50
51 $value = call_user_func($this->variableReader, $definition->getVariableName());
52
53 if (false !== $value) {
54 return $value;
55 } elseif (!$definition->isOptional()) {
56 throw new DefinitionException(sprintf(
57 "The environment variable '%s' has not been defined",
58 $definition->getVariableName()
59 ));
60 }
61
62 $value = $definition->getDefaultValue();
63
64 // Nested definition
65 if ($value instanceof DefinitionHelper) {
66 return $this->definitionResolver->resolve($value->getDefinition(''));
67 }
68
69 return $value;
70 }
71
72 /**
73 * @param EnvironmentVariableDefinition $definition
74 *
75 * {@inheritdoc}
76 */
77 public function isResolvable(Definition $definition, array $parameters = [])
78 {
79 $this->assertIsEnvironmentVariableDefinition($definition);
80
81 return $definition->isOptional()
82 || false !== call_user_func($this->variableReader, $definition->getVariableName());
83 }
84
85 private function assertIsEnvironmentVariableDefinition(Definition $definition)
86 {
87 if (!$definition instanceof EnvironmentVariableDefinition) {
88 throw new \InvalidArgumentException(sprintf(
89 'This definition resolver is only compatible with EnvironmentVariableDefinition objects, %s given',
90 get_class($definition)
91 ));
92 }
93 }
94 }
95