<?php
/**
* Binds runtime environment arguments for sandbox usage with optional flags.
*
* @param array $argv Array of command-line arguments.
* @return array Associative array of environment variables.
*/
function bindRuntimeEnvironment(array $argv): array
{
$env = [];
// Default values
$env['DEBUG'] = false;
$env['LOG_LEVEL'] = 'info';
$env['MAX_FILE_SIZE'] = 1024 * 1024; // 1MB
// Parse command-line arguments
$i = 1;
while ($i < count($argv)) {
$arg = $argv[$i];
if ($arg === '--debug') {
$env['DEBUG'] = true;
} elseif ($arg === '--log-level') {
if ($i + 1 < count($argv)) {
$env['LOG_LEVEL'] = $argv[$i + 1];
$i += 2; // Skip the flag and its value
} else {
error_log("Missing value for --log-level");
$i++;
}
} elseif ($arg === '--max-file-size') {
if ($i + 1 < count($argv)) {
$env['MAX_FILE_SIZE'] = (int)$argv[$i + 1] * 1024 * 1024; // Convert to bytes
$i += 2;
} else {
error_log("Missing value for --max-file-size");
$i++;
}
} else {
error_log("Unknown argument: " . $arg);
$i++;
}
}
// Set environment variables
putenv('DEBUG=' . (int)$env['DEBUG']); // Convert boolean to integer
putenv('LOG_LEVEL=' . $env['LOG_LEVEL']);
putenv('MAX_FILE_SIZE=' . $env['MAX_FILE_SIZE']);
return $env;
}
// Example usage (for testing/demonstration)
// $argv = ['--debug', '--log-level=debug', '--max-file-size=2048'];
// $env = bindRuntimeEnvironment($argv);
// print_r($env);
?>
Add your comment