Я пишу PHP-скрипт и должен получить некоторые параметры (h, n и v). Для меня лучший способ получить это — использовать функцию getopt
. Кроме того, если передана непредвиденная опция, я хотел бы отобразить справочное сообщение. Однако функция getopt
возвращает только ожидаемые параметры.
Вот мой сценарий:
$options = getopt('hnv');
if (!empty($options)) {
foreach (array_keys($options) as $option) {
switch ($option) {
// Run script.
case 'n':
case 'v':
break;
case 'h':
// Display help with OK exit code.
self_usage();
exit(0);
default:
// Display help with ERR exit code.
self_usage('Too many params');
exit(1);
}
}
}
Но если я запускаю свой скрипт с неожиданной опцией, такой как -p
, он запускается, потому что массив опций пуст.
php myscript.php -p
Если я передаю неожиданную опцию с ожидаемой, она тоже запускается.
php myscript.php -pn
php myscript.php -p -n
Я пытался проверить количество переданных аргументов, но это работает, только если я передаю аргументы один за другим (-n -p
), а не все в одном (-np
).
if ((count($argv) - 1) > count($options)) {
self_usage();
}
Есть ли хороший способ проверить неисключенные параметры во всем этом случае?
Спасибо за помощь!