nerou/cli-parser

0.1.1 2024-03-06 17:32 UTC

This package is auto-updated.

Last update: 2024-09-13 13:34:33 UTC


README

License PHP Version Require Version Psalm Type Coverage

本项目基于对php.net上这个相当旧的评论的稍作修改。

如果你...

...正在用PHP创建命令行应用程序,这些应用程序需要接收一些命令行参数、选项、命令和/或标志。

安装

注意:此库需要PHP 8.0+!

使用composer安装此库

composer require nerou/cli-parser

没有依赖。

用法

措辞

命令只是某个值,例如 myscript.php hello

选项--开头,可以带有一个值,例如 myscript.php --foomyscript.php --foo=barmyscript.php --foo bar

标志-开头,是选项的简写形式,例如 myscript.php -fmyscript.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