nerou / cli-parser
0.1.1
2024-03-06 17:32 UTC
Requires
- php: >=8.0
Requires (Dev)
- squizlabs/php_codesniffer: >=3.7
This package is auto-updated.
Last update: 2024-09-13 13:34:33 UTC
README
本项目基于对php.net上这个相当旧的评论的稍作修改。
如果你...
...正在用PHP创建命令行应用程序,这些应用程序需要接收一些命令行参数、选项、命令和/或标志。
安装
注意:此库需要PHP 8.0+!
使用composer安装此库
composer require nerou/cli-parser
没有依赖。
用法
措辞
命令只是某个值,例如 myscript.php hello
选项以--
开头,可以带有一个值,例如 myscript.php --foo
或 myscript.php --foo=bar
或 myscript.php --foo bar
标志以-
开头,是选项的简写形式,例如 myscript.php -f
或 myscript.php -f bar
参数是紧跟在单个--
后面的所有内容
示例
包含选项--foo
和--bar
以及标志-f
的(-f
是--foo
的简写形式)的最小示例
if(PHP_SAPI !== 'cli' || !isset($_SERVER['argv'])){ exit(1); // exit if not run via CLI } $cliArgs = new CLIParser($_SERVER['argv']); $cliArgs->setAllowedOptions(['foo', 'bar']); // list of supported options $cliArgs->setAllowedFlags(['f' => 'foo']); // maps flags to options $cliArgs->setStrictMode(true); // parse() will return `false` if there are options/flags that are not allowed if(!$cliArgs->parse()){ printUsage(); // show them how to use this script exit(1); }
使用值验证(请参阅PHP过滤器)
$cliArgs->setAllowedOptions([ 'foo' => [ 'filter' => FILTER_VALIDATE_FLOAT, 'flags' => FILTER_FLAG_ALLOW_THOUSAND, 'options' => [ 'min_range' => 0 ] ], 'bar' => [] // defaults to `['filter' => FILTER_DEFAULT]` ]);
限制和注意事项
- 不支持重复使用单个选项,例如
phpcpd src --exclude src/foo --exclude src/bar
许可
此库根据MIT许可(MIT)许可。有关更多信息,请参阅LICENSE。