<?php
/**
* Flattens CLI arguments with manual overrides for short-lived tasks.
*
* @param array $argv The command-line arguments array.
* @param array $defaults The default argument values.
* @param array $overrides An array of key => value pairs for manual overrides.
* @return array The flattened array of arguments.
*/
function flattenArgs(array $argv, array $defaults, array $overrides): array
{
$flattened = $defaults;
// Merge overrides, overwriting defaults where applicable
$flattened = array_merge($flattened, $overrides);
// Merge CLI arguments, overwriting existing keys in flattened array
foreach ($argv as $key => $value) {
$flattened[$key] = $value;
}
return $flattened;
}
// Example usage (for testing - remove for production)
if (PHP_SAPI === 'cli') {
$argv = ['--name=John', '--age=30', 'city=New York'];
$defaults = ['name' => 'Unknown', 'age' => 0, 'city' => 'Default City'];
$overrides = ['age' => 35];
$flattenedArgs = flattenArgs($argv, $defaults, $overrides);
print_r($flattenedArgs);
}
?>
Add your comment