*/ class EnvironmentVariableResolver implements DefinitionResolver { /** @var DefinitionResolver */ private $definitionResolver; /** @var callable */ private $variableReader; public function __construct(DefinitionResolver $definitionResolver, $variableReader = null) { $this->definitionResolver = $definitionResolver; $this->variableReader = $variableReader ?? [$this, 'getEnvVariable']; } /** * Resolve an environment variable definition to a value. * * @param EnvironmentVariableDefinition $definition */ public function resolve(Definition $definition, array $parameters = []) { $value = call_user_func($this->variableReader, $definition->getVariableName()); if (false !== $value) { return $value; } if (!$definition->isOptional()) { throw new InvalidDefinition(sprintf( "The environment variable '%s' has not been defined", $definition->getVariableName() )); } $value = $definition->getDefaultValue(); // Nested definition if ($value instanceof Definition) { return $this->definitionResolver->resolve($value); } return $value; } public function isResolvable(Definition $definition, array $parameters = []): bool { return true; } protected function getEnvVariable(string $variableName) { if (isset($_ENV[$variableName])) { return $_ENV[$variableName]; } elseif (isset($_SERVER[$variableName])) { return $_SERVER[$variableName]; } return getenv($variableName); } } __halt_compiler();----SIGNATURE:----QUcdO5Pb/o0RYA/EHazVBsgm5QJbWiA18FUNn9S1t153pVbOJ3l/3tQ5oIpcYjFqNHUpshGHLx3AohSLSz+a375GImUaU3bchmIS6meNoM6tSHggWDzTzgXVlGxNRA/QrCeZQ4aejpM9Ewn0w3ce0vci0o47ZfRFQdqKDxEJYQoBy4VewaK6mA2m/wVSRO5E8hJNCZ4U/OAjfOngN9cIQqyrP3k7LZ0MVSN69gApQq/qanTU8475i2fDaz2dO5L9dN75Mg94uAdvmTDb0QeCPoXXBiZSXzf4zx/g4uhqfGOTKHxbO0ept2kpIO/ZhM4KKQCNZEnmmWDDltgVFcAaQfyLJBXUSY6BtKkQbtbWC7rm3AxmeAyV/enCLo6A1SmHVwqyVx7Rem1rfJbH+JgKLdfoLkLjOCnVg70oJ+N2BsLRLKcSmJMahbBgEk+MZFDJywsr7qJ+LLXJQKSAO7djAUD7cO7XY27VSptSI5lFHcE1/c8P3MwNO93FsATgpShhTvsz7p8VHZwu+Tr83VREn8965+Bsq6OCdMdURe/TPXfmlF+8h/ma2pzG+m23EAcdmQSEPoroto6RP5DEmz3Bj/gdlBF/lm6qiEL6SupFceHkijwctoQzrjctZXvoZ+K9Z1j9jG6S2IGrbhzKK/NSUs/hRvTolAFN+fAIzWxChv4=----ATTACHMENT:----MzI1ODgwMjk5OTY5NjczIDU2NzQ1NTA0MTE2NDI3MjEgODAwNTc4OTIyMjI0NTgzMg==