jawira/mini-getopt

getopt() 函数的非常简单的封装

v1.3.0 2021-10-02 19:32 UTC

This package is auto-updated.

Last update: 2024-09-12 02:05:28 UTC


README

非常简单的 getopt() 函数封装。

Latest Stable Version composer.lock .gitattributes License

用法

这只是一个封装,因此 mini-getopt 的输出将与 getopt() 函数相同。

  1. 首先,您必须实例化 \Jawira\MiniGetopt\MiniGetopt

  2. 然后,您必须配置您要使用的选项。为此,请使用以下方法

    • MiniGetopt::addRequired.
    • MiniGetopt::addOptional.
    • MiniGetopt::addNoValue.
  3. 要检索值,您必须调用以下方法之一

    • MiniGetopt::getopt 返回与 getopt() 相同的结果。您可以可选地传递 $optind 参数。
    • MiniGetopt::getOption 获取单个值。
    • MiniGetopt::doc 获取文档。

基本用法

PHP 代码

// resources/example.php
// Preparing options
$mg = new \Jawira\MiniGetopt\MiniGetopt();
$mg->addRequired('f', 'format');    // value is required
$mg->addOptional('r', 'retry');     // value is optional
$mg->addOptional('q', '');          // only short option
$mg->addNoValue('v', 'verbose');    // no value
$mg->addNoValue('', 'version');     // only long option

// Calling getopt
var_export($mg->getopt());

执行代码

$ php resources/example.php

array (
)
$ php resources/example.php -f=xml

array (
   'f' => 'xml',
)
$ php resources/example.php --format=xml -r -v

array (
  'format' => 'xml',
  'r' => false,
  'v' => false,
)
$ php resources/example.php -f=json -r=yes -v

array (
    'f' => 'json',
    'r' => 'yes',
    'v' => false,
)
$ php resources/example.php --retry -vvv

array (
  'retry' => false,
  'v' => 
  array (
    0 => false,
    1 => false,
    2 => false,
  ),
)
$ php resources/example.php --version=banana --invalid

array (
  'version' => false,
)

optind 参数

// Setup
$mg = new \Jawira\MiniGetopt\MiniGetopt();
$mg->addRequired('f', 'format');
$mg->addNoValue('v', 'verbose');

// Calling getopt function with `optind` parameter
$optind = null;
$options = $mg->getopt($optind);
echo "optind: $optind" . PHP_EOL;
$ php resources/example.php --format=pdf -vv
optind: 3

生成文档

$mg = new \Jawira\MiniGetopt\MiniGetopt();
$mg->addRequired('f', 'format', 'Format to export', 'png|gif|svg');
$mg->addOptional('r', 'retry', 'Retry on error', 'count');
$mg->addOptional('q', '', 'Quiet mode', 'yes|no');
$mg->addNoValue('v', 'verbose', 'Display verbose messages');
$mg->addNoValue('', 'version', 'Show version');
echo $mg->doc();
$ php resource/example.php
OPTIONS

-f, --format=<png|gif|svg>
Format to export

-r, --retry=[count]
Retry on error

-q=[yes|no]
Quiet mode

-v, --verbose
Display verbose messages

--version
Show version

如何安装

$ composer install jawira/mini-getopt

贡献

如果您喜欢这个项目,请⭐ 在 GitHub 上给它加星。

许可

此库受 MIT 许可证 的许可。

来自 jawira 的包

jawira/emoji-catalog GitHub stars
访问超过 3,000 个表情符号作为类常量。
jawira/plantuml-encoding GitHub stars
PlantUML 编码函数。
jawira/case-converter GitHub stars
在 13 种命名约定之间转换字符串:Snake case、Camel case、Pascal case、Kebab case、Ada case、Train case、Cobol case、Macro case、Upper case、Lower case、Sentence case、Title case 和 Dot notation。
更多...