PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.6.0
Defender Security – Malware Scanner, Login Security & Firewall v5.6.0
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / lib / packages / DI / Definition / Resolver / EnvironmentVariableResolver.php

EnvironmentVariableResolver.php in Defender Security – Malware Scanner, Login Security & Firewall 5.6.0, at lib/packages/DI/Definition/Resolver/EnvironmentVariableResolver.php

80 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace WPMU_DEV\Defender\Vendor\DI\Definition\Resolver;
6
7 use WPMU_DEV\Defender\Vendor\DI\Definition\Definition;
8 use WPMU_DEV\Defender\Vendor\DI\Definition\EnvironmentVariableDefinition;
9 use WPMU_DEV\Defender\Vendor\DI\Definition\Exception\InvalidDefinition;
10
11 /**
12 * Resolves a environment variable definition to a value.
13 *
14 * @author James Harris <[email protected]>
15 */
16 class EnvironmentVariableResolver implements DefinitionResolver
17 {
18 /**
19 * @var DefinitionResolver
20 */
21 private $definitionResolver;
22
23 /**
24 * @var callable
25 */
26 private $variableReader;
27
28 public function __construct(DefinitionResolver $definitionResolver, $variableReader = null)
29 {
30 $this->definitionResolver = $definitionResolver;
31 $this->variableReader = $variableReader ?? [$this, 'getEnvVariable'];
32 }
33
34 /**
35 * Resolve an environment variable definition to a value.
36 *
37 * @param EnvironmentVariableDefinition $definition
38 */
39 public function resolve(Definition $definition, array $parameters = [])
40 {
41 $value = call_user_func($this->variableReader, $definition->getVariableName());
42
43 if (false !== $value) {
44 return $value;
45 }
46
47 if (!$definition->isOptional()) {
48 throw new InvalidDefinition(sprintf(
49 "The environment variable '%s' has not been defined",
50 $definition->getVariableName()
51 ));
52 }
53
54 $value = $definition->getDefaultValue();
55
56 // Nested definition
57 if ($value instanceof Definition) {
58 return $this->definitionResolver->resolve($value);
59 }
60
61 return $value;
62 }
63
64 public function isResolvable(Definition $definition, array $parameters = []) : bool
65 {
66 return true;
67 }
68
69 protected function getEnvVariable(string $variableName)
70 {
71 if (isset($_ENV[$variableName])) {
72 return $_ENV[$variableName];
73 } elseif (isset($_SERVER[$variableName])) {
74 return $_SERVER[$variableName];
75 }
76
77 return getenv($variableName);
78 }
79 }
80