1. <?php
  2. /**
  3. * Parses environment variables for scheduled runs with manual overrides.
  4. *
  5. * @param array $env_vars Array of environment variables.
  6. * @param array $defaults Array of default values for each variable.
  7. * @return array Associative array of parsed values.
  8. */
  9. function parseEnvVariables(array $env_vars, array $defaults): array
  10. {
  11. $parsed_values = [];
  12. foreach ($defaults as $key => $default) {
  13. // Get environment variable, or use default if not set.
  14. $env_value = $env_vars[$key] ?? $default;
  15. // Handle overrides (e.g., "OVERRIDE_VAR=manual_value")
  16. if (strpos($key, 'OVERRIDE_') === 0) {
  17. $override_key = str_replace('OVERRIDE_', '', $key);
  18. if (isset($env_vars[$override_key])) {
  19. $env_value = $env_vars[$override_key];
  20. }
  21. }
  22. // Type casting and validation depending on the variable.
  23. if (is_numeric($default)) {
  24. $env_value = (int)$env_value;
  25. } elseif (is_bool($default)) {
  26. $env_value = (bool)$env_value;
  27. }
  28. $parsed_values[$key] = $env_value;
  29. }
  30. return $parsed_values;
  31. }
  32. // Example Usage:
  33. /*
  34. $env_variables = getenv(); // Get all environment variables
  35. $default_values = [
  36. 'scheduled_task' => 'daily',
  37. 'log_level' => 'info',
  38. 'max_retries' => 3,
  39. 'enable_feature_x' => false,
  40. ];
  41. $parsed_variables = parseEnvVariables($env_variables, $default_values);
  42. print_r($parsed_variables);
  43. */
  44. ?>

Add your comment