*/ 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:----WruKEahXvjw/+VZXjQ4jwO76WJ72IWR8gwZXKUxNOx/syv0ECDlFlREV7OA6OSuCD2sUKq19R0L6tEmy0B6YRar7HsFZqzXGR8ptann6FfafoksXNKwInEKPOIEM09gbk3qQWRzRr0LxYNgc9DGoyvOn9dwZhQ96Bt54WW4kYtH7BTbyzBhCBZc8Cg4ptl97yxA/fWn2AN6Mn5gmWfXtgEzLb1eJu/Jio8kukguwKjzei4JDIkZZtzK1fk9YaoLL66DPs1tmgLGyphQIsOqfhW8i5tHfJZSoSDS1pl/DIvsuzKaL0ZwcwKSKaprIyjxs0jDBAhujAGaYGAp7n2O4zwbTiIMRsPYqM5RdgWUyTGZ7Xh6+a2ive375geNWo6mz+FN4Nm8a29S9aH+POtWRb2I2JMvlQsIzMcqtelrul1yToaDqi0KlxIaZFTm12sAYzl49PojmeziJoW1eAeqY03IZc7z3Rl2QYOTzE+p/kCjIzMYInVn6cWA0pxfFFxskVUiv95PZZNp9Fv5Hb7nlGszWngxsV7lIGNOJdjcOrv0q7QdTuDkb73fUFDt7fwAdhqM4pl05A+w57YW2We3aglmNXcw9TbfcRy49/SYaYfmM9VFR1lsq7v2nm5DnIUgT5Q47iFsnfj+kQRQHMaBqyTG10nX3mLeqdt5w6ii2Z50=----ATTACHMENT:----NTcwMzQ4Mzc2NTM5OTUxMSA1MDI3NzkyOTE5NDI2MTE3IDE5OTc3OTI5ODAxNjE3MDQ=