1. <?php
  2. /**
  3. * Detects errors in CLI arguments.
  4. *
  5. * @param array $argv Array of command-line arguments.
  6. * @param array $expected_args Array of expected arguments and their types.
  7. * @return bool True if no errors found, false otherwise.
  8. */
  9. function validate_cli_arguments(array $argv, array $expected_args): bool
  10. {
  11. foreach ($expected_args as $name => $type) {
  12. if (isset($argv[$name])) {
  13. // Argument exists, check type
  14. if (!is_string($type) && !is_int($type)) { //Simple type checking
  15. return false; // Type mismatch
  16. }
  17. } else {
  18. // Argument missing
  19. return false; // Argument missing
  20. }
  21. }
  22. return true; // All arguments are valid
  23. }
  24. // Example Usage (for testing)
  25. if (count($argv) > 1) { //Check if arguments are provided
  26. $expected_args = [
  27. 'name' => 'string',
  28. 'age' => 'int',
  29. ];
  30. if (validate_cli_arguments($argv, $expected_args)) {
  31. echo "CLI arguments are valid.\n";
  32. //Process arguments
  33. echo "Name: " . $argv['name'] . "\n";
  34. echo "Age: " . $argv['age'] . "\n";
  35. } else {
  36. echo "Error: Invalid CLI arguments.\n";
  37. echo "Expected arguments: " . print_r($expected_args, true) . "\n";
  38. echo "Provided arguments: " . print_r($argv, true) . "\n";
  39. }
  40. } else {
  41. echo "Error: No CLI arguments provided.\n";
  42. echo "Usage: php script.php <name> <age>\n";
  43. }
  44. ?>

Add your comment