jawira / mini-getopt
getopt() 函数的非常简单的封装
v1.3.0
2021-10-02 19:32 UTC
Requires
- php: ^7.4 || ^8.0
- ext-mbstring: *
Requires (Dev)
- behat/behat: ^3.8
- ergebnis/composer-normalize: ^2.15
- jawira/skeleton: ^2.7
- phpstan/phpstan: ^0.12.56
Suggests
- pds/skeleton: Standard PHP package skeleton
- phing/phing: PHP Build Tool
README
非常简单的 getopt()
函数封装。
用法
这只是一个封装,因此 mini-getopt
的输出将与 getopt()
函数相同。
-
首先,您必须实例化
\Jawira\MiniGetopt\MiniGetopt
。 -
然后,您必须配置您要使用的选项。为此,请使用以下方法
MiniGetopt::addRequired
.MiniGetopt::addOptional
.MiniGetopt::addNoValue
.
-
要检索值,您必须调用以下方法之一
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
- 访问超过 3,000 个表情符号作为类常量。
-
jawira/plantuml-encoding
- PlantUML 编码函数。
-
jawira/case-converter
- 在 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。
- 更多...