1. <?php
  2. /**
  3. * Flattens CLI arguments with manual overrides for short-lived tasks.
  4. *
  5. * @param array $argv The command-line arguments array.
  6. * @param array $defaults The default argument values.
  7. * @param array $overrides An array of key => value pairs for manual overrides.
  8. * @return array The flattened array of arguments.
  9. */
  10. function flattenArgs(array $argv, array $defaults, array $overrides): array
  11. {
  12. $flattened = $defaults;
  13. // Merge overrides, overwriting defaults where applicable
  14. $flattened = array_merge($flattened, $overrides);
  15. // Merge CLI arguments, overwriting existing keys in flattened array
  16. foreach ($argv as $key => $value) {
  17. $flattened[$key] = $value;
  18. }
  19. return $flattened;
  20. }
  21. // Example usage (for testing - remove for production)
  22. if (PHP_SAPI === 'cli') {
  23. $argv = ['--name=John', '--age=30', 'city=New York'];
  24. $defaults = ['name' => 'Unknown', 'age' => 0, 'city' => 'Default City'];
  25. $overrides = ['age' => 35];
  26. $flattenedArgs = flattenArgs($argv, $defaults, $overrides);
  27. print_r($flattenedArgs);
  28. }
  29. ?>

Add your comment