yeriomin/getopt

一个小型PHP getopt助手/库。提供可定制的输入参数解释和用法信息生成。

v1.0.1 2015-01-16 13:41 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:32:03 UTC


README

#getopt

Latest Version Build Status Scrutinizer Code Quality SensioLabsInsight

一个小型PHP getopt助手/库。提供可定制的输入参数解释和用法信息生成。

用法

$ composer require yeriomin/getopt

<?php
include 'vendor/autoload.php';
$getopt = new \Yeriomin\Getopt\Getopt();
$arguments = $getopt->getArguments();

功能

  1. 显然它可以解析命令行选项。使用 $_SERVER['argv']。
  2. 短选项、长选项和参数。
  3. 短选项分组。
  4. 必需选项。
  5. -- 参数分隔符。
  6. 用法信息生成。

详细用法

参数和选项

让我们看看getopt如何处理以下输入:

$ php somescript.php arg1 --option1 value1 -o value2 -abc -- --option3 value3

获取选项值

echo $getopt->option1; // "value1"
echo $getopt->optionWhichIsNotProvided; // null

getArguments()

返回一个参数数组。对于上述示例返回

array(3) {
  [0] =>
  string(4) "arg1"
  [1] =>
  string(9) "--option3"
  [2] =>
  string(6) "value3"
}

getOptionsLong()

返回一个长选项数组。对于上述示例返回

array(1) {
  'option1' =>
  string(6) "value1"
}

getOptionsShort()

返回一个短选项数组。对于上述示例返回

array(4) {
  'o' =>
  string(6) "value2"
  'a' =>
  bool(true)
  'b' =>
  bool(true)
  'c' =>
  bool(true)
}

定义选项

如果您只想获取控制台参数,您只需要前面章节中提到的三个方法。然而,向getopt提供您期望的选项定义可以让您定义必需的选项并获取一个用法信息。

addOptionDefinition()

$optionDefinition = new \Yeriomin\Getopt\OptionDefinition(
    'c',
    'config',
    'Path to a configuration file'
);
$getopt->addOptionDefinition($optionDefinition);

这样做定义了-c|--config选项。提供-c将填充--config,反之亦然。

必需选项

$optionDefinition = new \Yeriomin\Getopt\OptionDefinition(
    'c',
    'config',
    'Path to a configuration file',
    true
);
$getopt->addOptionDefinition($optionDefinition);

OptionDefinition构造函数中的第四个参数使选项必需。您也可以使用$optionDefinition->setRequired()来做到这一点。如果任何必需选项未提供,当调用getArgumentsgetOptionsShortgetOptionsLong时,getopt将抛出异常。

getUsageMessage()

此方法允许您根据已定义的选项获取用法信息。看起来有点像手册页。

<?php
include 'vendor/autoload.php';
$getopt = new \Yeriomin\Getopt\Getopt();
$optionConfig = new \Yeriomin\Getopt\OptionDefinition(
    'c',
    'config',
    'Path to a configuration file',
    true
);
$getopt->addOptionDefinition($optionConfig);
$optionHelp = new \Yeriomin\Getopt\OptionDefinition(
    'h',
    'help',
    'Show script help message',
);
$getopt->addOptionDefinition($optionHelp);
try {
    $configPath = $getopt->c;
} catch (\Yeriomin\Getopt\GetoptException $e) {
    echo $e->getMessage() . "\n";
    echo $getopt->getUsageMessage();
    exit(1);
}

尝试在没有参数的情况下运行此脚本将给出以下消息

Missing required options: -c/--config
Usage: somscript.php [OPTIONS] [ARGUMENTS]

Options:
 -c, --config Path to a configuration file
 -h, --help   Show script help message