ennerd/fubber-cmd

一个简单的、独立的库,用于解析命令行参数,并使开发命令行功能变得容易。

v1.0.1 2019-03-21 10:23 UTC

This package is auto-updated.

Last update: 2024-09-21 22:32:16 UTC


README

CMD 是一个简单的 PHP 命令行解析器,使使用 PHP 创建命令行工具变得更加容易。

安装

安装 Fubber CMD 的推荐方法是使用 Composer

$ composer require ennerd/fubber-cmd

示例

examples/ 目录中有一些无用的工具,所有这些工具都作为示例。

工具直接加载 Cmd 类。在现实世界中,您将使用 composer autoloader。

API

构造函数

Cmd::__construct(string $usage, array $args=[], array $mandatoryParams=[]);

$usage 是您实用程序的简短描述。如果您的实用程序需要,您可以使用多行。

$args 是一个具有使用描述的参数数组。键包含使用竖线分隔的参数列表,其中第一部分是短选项的组:'abc|long1|long2'。对于每个短选项和每个长选项,您可以使用冒号 (:) 来指定选项需要值,或者使用双冒号 (::) 来指定可选值。

数组键的格式

[
    'a:b:c:|long1:|long2:|long3:' => 'Three short and three long options that require a value',
    'a:b::|long1:|long2::' => 'A combination of required and optional value',
    '|no-short-option' => 'No short option available',
    ]

更多示例

$args = [
    'a' => 'The -a flag is boolean and can be checked with $cmd->flag('a')',
    'b:' => 'Requires a value: -b 20. Check with $cmd->value('b').'
    'd:e:' => 'Aliases for a value: -d 20 is equivalent to -e 20.',
    'f:|force:' => 'Short and long version -f 20 and --force=20.',
    '|no-short' => 'No short version, only long flag --no-short.',
    ];

$mandatoryParams 是命令末尾的必填参数列表

$mandatoryParams = [
    'what-to-say',
    ];

将产生以下输出

$ your-tool --help
your-tool <what-to-say>

标志

标志是布尔选项。它们有两种形式:短和长。

$cmd = new Cmd('Tool with flags', [
    'abc' => 'Flags -a, -b and -c',
    'd|the-d-flag' => 'Flags -d and --the-d-flag',
]);
$a = $cmd->flag('a');
$b = $cmd->flag('a');
$theDFlag = $cmd->flag('the-d-flag');

选项

选项类似于标志,但它们有必填值。这是通过在定义中添加冒号 (:) 来实现的。

$cmd = new Cmd('Tool with options', [
    'a:b:c' => 'Option -a <value>, -b <value> and -c <value>',
    '|the-d-option' => 'Option --the-d-option=<value>',
    'e|the-e-option|the-extended-option' => 'Option -e <value>, --the-e-option=<value>, --the-extended-option=<value>',
]);
$a = $cmd->value('a');
$b = $cmd->value('b');
$c = $cmd->value('c');

带有可选值的标志

带有可选选项的标志在定义中用双冒号 (::) 标记。

$cmd = new Cmd('Tool with options', [
    'a::' => 'Option -a [value]',
    '|long-optional-option::' => 'Optional option',
]);

参数

参数是函数的必需参数。

$cmd = new Cmd('Tool with arguments', null, ['argument']);

参数可通过内置的 PHP 全局 $argv 访问。您还可以访问一个版本,其中已删除定义的标志和选项

print_r( $cmd->argv );

更多

您必须自己进行更高级的验证。如果存在验证错误,请简单地使用 Cmd::error 方法解释错误。

$cmd->error("You can't combine -a with -b");

要自行显示命令用法

$cmd->usage();
die();