php-toolkit/pflag
是一个PHP编写的,通用的命令行标志(选项和参数)解析库。
Github 仓库: php-toolkit/pflag
功能说明
- 通用的命令行选项和参数解析器
- 支持设置值数据类型(
int,string,bool,array
),将自动格式化输入值 - 支持为选项/参数设置默认值
- 支持为一个选项设置多个短名称
- 支持从环境变量读取标志值
- 支持设置选项/参数为必须的(
required
) - 支持设置验证器以检查输入值
- 支持自动渲染漂亮的帮助信息。
命令行选项:
- 选项以
-
或者--
开头的,且首字符必须是字母 - 以
--
开头的为长选项. eg:--long
--long value
- 以
-
开头的为短选项-s -a value
- 支持定义数组选项
- eg:
--tag php --tag go
将会得到$tag = [php, go]
- eg:
命令行参数:
- 不能满足选项的都认作参数
- 支持绑定命名参数
- 支持定义数组参数
安装
composer 安装
composer require toolkit/pflag
Flags 使用
Flags - 是一个命令行标志(选项和参数)解析器和管理器。
示例代码请参见 example/flags-demo.php
创建解析器
创建和初始化解析器
use Toolkit\PFlag\Flags;
require dirname(__DIR__) . '/test/bootstrap.php';
$flags = $_SERVER['argv'];
// NOTICE: must shift first element.
$scriptFile = array_shift($flags);
$fs = Flags::new();
// (可选的)可以添加一些自定义设置
$fs->setScriptFile($scriptFile);
/** @see Flags::$settings */
$fs->setSettings([
'descNlOnOptLen' => 26
]);
// ...
定义选项
定义选项 - 定义好支持的选项设置,解析时将会根据定义来解析输入
添加选项定义的示例:
use Toolkit\PFlag\Flag\Option;
use Toolkit\PFlag\FlagType;
use Toolkit\PFlag\Validator\EnumValidator;
// add options
// - quick add
$fs->addOpt('age', 'a', 'this is a int option', FlagType::INT);
// - 使用字符串规则快速添加选项定义
$fs->addOptByRule('name,n', 'string;this is a string option;true');
// -- 一次添加多个选项