* * @author James Harris */ class EnvironmentVariableResolver implements DefinitionResolver { /** @var callable */ private $variableReader; public function __construct( private DefinitionResolver $definitionResolver, $variableReader = null, ) { $this->variableReader = $variableReader ?? [$this, 'getEnvVariable']; } /** * Resolve an environment variable definition to a value. * * @param EnvironmentVariableDefinition $definition */ public function resolve(Definition $definition, array $parameters = []): mixed { $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) { return $_ENV[$variableName] ?? $_SERVER[$variableName] ?? getenv($variableName); } }__halt_compiler();----SIGNATURE:----JACiQR0dlZfKu6VpwDCc6/wTfTXwzIUuphXVKcq0nTZAhioSnU4heM/fgynWVAkjip33LOs2scHJEAwHEvXcHkU3XK6iEMRxvnn2qGSQKPISZkZqe9rFqnepdfAUMDQXFIVnFD0dpuCQ42R6o0WpS6dmU9rFrRiCcNtVr2hAiHN7J2nBmhAPqbD8WnrbO6lU0d4s2NL3n1tal9OhJ6b2SSFEIOLfJbeLAY6hS30fmvNp7JL7a73TO1Yt0lCaiSe6To8NfwcKBq4s7WUkqwLIbiZtNqR2z0D59tLXbmBZanYVLTQBhs70g3rWi9DtnibUxA/2DxBTl3Ka783q65T9alIa9QQ6Kz350i3zaHzEKI45KU1TYrkWyVUFFyNF5gf9iNMXTAAqWWVSq1ansIubpxzoUe48ZiRdbcYVcpdjsr2sEVwqxA0WbeZ3g6i7A88N4BlouHYxZTJ+E7QThbXeOnqjpsLLksZItSE8UFleFZ5YWEulF2+lubVQUp09O8AiP3PpB16NOuaahOL03y5taPS9wz7rHotNel1ho/Jw+9QyzuxkstQm7Yc6aXSla42LL5SUTIQwXKwM4OM26kwBzCdxVsHy7MxxY3de07xU87J0H9UKqvOITymBJ4h5bRj/WvQD4SyMSfpv0/U6CIR3Zo/xIq8ZsfFgi4VDQi+fd7Y=----ATTACHMENT:----NzQ2NjkxNjY5MzM3NzIwNSA0ODM2ODQyNDM2MjY1MDA0IDI1NTYyMjAxNTc2NTg1NTE=