<?php
/**
* Parses environment variables for scheduled runs with manual overrides.
*
* @param array $env_vars Array of environment variables.
* @param array $defaults Array of default values for each variable.
* @return array Associative array of parsed values.
*/
function parseEnvVariables(array $env_vars, array $defaults): array
{
$parsed_values = [];
foreach ($defaults as $key => $default) {
// Get environment variable, or use default if not set.
$env_value = $env_vars[$key] ?? $default;
// Handle overrides (e.g., "OVERRIDE_VAR=manual_value")
if (strpos($key, 'OVERRIDE_') === 0) {
$override_key = str_replace('OVERRIDE_', '', $key);
if (isset($env_vars[$override_key])) {
$env_value = $env_vars[$override_key];
}
}
// Type casting and validation depending on the variable.
if (is_numeric($default)) {
$env_value = (int)$env_value;
} elseif (is_bool($default)) {
$env_value = (bool)$env_value;
}
$parsed_values[$key] = $env_value;
}
return $parsed_values;
}
// Example Usage:
/*
$env_variables = getenv(); // Get all environment variables
$default_values = [
'scheduled_task' => 'daily',
'log_level' => 'info',
'max_retries' => 3,
'enable_feature_x' => false,
];
$parsed_variables = parseEnvVariables($env_variables, $default_values);
print_r($parsed_variables);
*/
?>
Add your comment