PluginProbe
The Innovative Form Builder – IvyForms / 0.2
The Innovative Form Builder – IvyForms v0.2
1.5.1 1.5 1.4.1 1.4 trunk 0.1.2 0.2 0.2.1 0.3 0.3.1 0.4 0.5 0.6 0.6.1 0.6.1-backup 0.6.1.1 0.7 0.8 0.8.1 0.8.2 0.9 0.9.1 1.0 1.1 1.1.1 All 27 releases
ivyforms / backend / vendor / php-di / php-di / src / Definition / Resolver / EnvironmentVariableResolver.php

EnvironmentVariableResolver.php in The Innovative Form Builder – IvyForms 0.2, at backend/vendor/php-di/php-di/src/Definition/Resolver/EnvironmentVariableResolver.php

80 lines 2.0 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 DI\Definition\Resolver;
6
7 use DI\Definition\Definition;
8 use DI\Definition\EnvironmentVariableDefinition;
9 use 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