PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.7.0
Defender Security – Malware Scanner, Login Security & Firewall v5.7.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.7.0, at lib/packages/DI/Definition/Resolver/EnvironmentVariableResolver.php

70 lines 1.9 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 * @template-implements DefinitionResolver<EnvironmentVariableDefinition>
15 *
16 * @author James Harris <[email protected]>
17 */
18 class EnvironmentVariableResolver implements DefinitionResolver
19 {
20 /** @var callable */
21 private $variableReader;
22
23 public function __construct(
24 private DefinitionResolver $definitionResolver,
25 $variableReader = null,
26 ) {
27 $this->variableReader = $variableReader ?? [$this, 'getEnvVariable'];
28 }
29
30 /**
31 * Resolve an environment variable definition to a value.
32 *
33 * @param EnvironmentVariableDefinition $definition
34 */
35 public function resolve(Definition $definition, array $parameters = []) : mixed
36 {
37 $value = call_user_func($this->variableReader, $definition->getVariableName());
38
39 if (false !== $value) {
40 return $value;
41 }
42
43 if (!$definition->isOptional()) {
44 throw new InvalidDefinition(sprintf(
45 "The environment variable '%s' has not been defined",
46 $definition->getVariableName()
47 ));
48 }
49
50 $value = $definition->getDefaultValue();
51
52 // Nested definition
53 if ($value instanceof Definition) {
54 return $this->definitionResolver->resolve($value);
55 }
56
57 return $value;
58 }
59
60 public function isResolvable(Definition $definition, array $parameters = []) : bool
61 {
62 return true;
63 }
64
65 protected function getEnvVariable(string $variableName)
66 {
67 return $_ENV[$variableName] ?? $_SERVER[$variableName] ?? getenv($variableName);
68 }
69 }
70