<?php
/**
* Detects errors in CLI arguments.
*
* @param array $argv Array of command-line arguments.
* @param array $expected_args Array of expected arguments and their types.
* @return bool True if no errors found, false otherwise.
*/
function validate_cli_arguments(array $argv, array $expected_args): bool
{
foreach ($expected_args as $name => $type) {
if (isset($argv[$name])) {
// Argument exists, check type
if (!is_string($type) && !is_int($type)) { //Simple type checking
return false; // Type mismatch
}
} else {
// Argument missing
return false; // Argument missing
}
}
return true; // All arguments are valid
}
// Example Usage (for testing)
if (count($argv) > 1) { //Check if arguments are provided
$expected_args = [
'name' => 'string',
'age' => 'int',
];
if (validate_cli_arguments($argv, $expected_args)) {
echo "CLI arguments are valid.\n";
//Process arguments
echo "Name: " . $argv['name'] . "\n";
echo "Age: " . $argv['age'] . "\n";
} else {
echo "Error: Invalid CLI arguments.\n";
echo "Expected arguments: " . print_r($expected_args, true) . "\n";
echo "Provided arguments: " . print_r($argv, true) . "\n";
}
} else {
echo "Error: No CLI arguments provided.\n";
echo "Usage: php script.php <name> <age>\n";
}
?>
Add your comment