donatj /flags
GNU风格的PHP命令行参数解析器
Requires
- php: >=5.3.0
Requires (Dev)
- donatj/drop: *
- phpunit/phpunit: ~4|~9
README
Flags是一个受Go语言Flag包启发的参数解析器,采用了其方法,但附加了GNU风格的参数解析器。
Flags支持以下参数风格
长参数
--key=value
/ --key value
短参数
-v
GNU风格多短参数
-Xasd
相同短参数的多个实例
-vvv
以及用于绝对分隔参数和选项的 --
操作符。
要求
- php: >=5.3.0
安装
使用以下命令安装最新版本
composer require 'donatj/flags'
示例
以下是一个简单的脚本示例
<?php require __DIR__ . '/../vendor/autoload.php'; $flags = new donatj\Flags(); $foo = & $flags->bool('foo', false, 'Enable the foo'); $bar = & $flags->uint('bar', 10, 'Number of bars'); $baz = & $flags->string('baz', 'default', 'What to name the baz'); $verbose = & $flags->short('v', 'verbosity'); /** * No Default value, making qux is *required* */ $qux = & $flags->bool('qux'); try { $flags->parse(); } catch( Exception $e ) { die($e->getMessage() . PHP_EOL . $flags->getDefaults() . PHP_EOL); }
引用参数的 = &
允许在触发 parse()
方法后,将值从 默认值 更新到参数值。这受到了Go Flag包中使用指针的启发。
bash-3.2$ php example/example.php
Expected option --qux missing.
-v verbosity
--foo Enable the foo
--bar [uint] Number of bars
--baz [string] What to name the baz
--qux <bool>
文档
类:\donatj\Flags
方法:Flags->__construct
function __construct([ array $args = null [, $skipFirstArgument = true]])
Flags构造函数。
参数
- 数组
$args
- 要解析的参数,默认为 $_SERVER['argv'] - 布尔值
$skipFirstArgument
- 设置为false将使第一个参数被视为参数而不是命令。
方法:Flags->arg
function arg($index)
返回第n个命令行参数。 arg(0)
是在处理完参数后的第一个剩余参数。
参数
- 整数
$index
返回
- 字符串
方法:Flags->args
function args()
返回非标志的命令行参数。
返回
- 字符串数组 - 参数字符串数组
方法:Flags->shorts
function shorts()
返回按字符索引的短标志调用次数数组
-v
将设置 'v' 索引为 1,而 -vvv
将设置 'v' 索引为 3
返回
- 数组
方法:Flags->longs
function longs()
返回按标志名称索引的长标志值数组
返回
- 数组
方法:Flags->short
function short($letter [, $usage = ''])
定义指定名称的短标志和用法字符串。
返回值是对一个整型变量的引用,该变量存储短标志被调用的次数。
这意味着v的引用值如下。
-v => 1
-vvv => 3
参数
- 字符串
$letter
- 要定义的短标志字符 - 字符串
$usage
- 用法描述
返回
- 整数
方法:Flags->bool
function bool($name [, $value = null [, $usage = '']])
定义指定名称、默认值和用法字符串的布尔长标志。
返回值是对存储标志值的变量的引用。
示例
真值-y
--mybool=[true|t|1]
--mybool [true|t|1]
--mybool
假值-y
--mybool=[false|f|0]
--mybool [false|f|0]
[not calling --mybool and having the default false]
参数
- 字符串
$name
- 要定义的长标志名称 - 混合
$value
- 默认值 - 通常对于布尔值是false - 如果为null则标记标志为必需 - 字符串
$usage
- 用法描述
返回
- 混合 - 标志值的引用
方法:Flags->float
function float($name [, $value = null [, $usage = '']])
定义指定名称、默认值和用法字符串的浮点长标志。
返回值是对存储标志值的变量的引用。
示例
--myfloat=1.1
--myfloat 1.1
参数
- 字符串
$name
- 要定义的长标志名称 - 混合
$value
- 默认值,如果为null则标记为必选标志 - 字符串
$usage
- 用法描述
返回
- 混合 - 标志值的引用
方法:Flags->int
function int($name [, $value = null [, $usage = '']])
定义一个指定名称、默认值和用法字符串的整数长标志。
返回值是对存储标志值的变量的引用。
注意:浮点值会引发错误,而不是转换。
示例
--myinteger=1
--myinteger 1
参数
- 字符串
$name
- 要定义的长标志名称 - 混合
$value
- 默认值,如果为null则标记为必选标志 - 字符串
$usage
- 用法描述
返回
- 混合 - 标志值的引用
方法:Flags->uint
function uint($name [, $value = null [, $usage = '']])
定义一个指定名称、默认值和用法字符串的无符号整数长标志。
返回值是对存储标志值的变量的引用。
注意:负值会引发错误,而不是转换。
示例
--myinteger=1
--myinteger 1
参数
- 字符串
$name
- 要定义的长标志名称 - 混合
$value
- 默认值,如果为null则标记为必选标志 - 字符串
$usage
- 用法描述
返回
- 混合 - 标志值的引用
方法:Flags->string
function string($name [, $value = null [, $usage = '']])
定义一个指定名称、默认值和用法字符串的字符串长标志。
返回值是对存储标志值的变量的引用。
示例
--mystring=vermouth
--mystring="blind jazz singers"
--mystring vermouth
--mystring "blind jazz singers"
参数
- 字符串
$name
- 要定义的长标志名称 - 混合
$value
- 默认值,如果为null则标记为必选标志 - 字符串
$usage
- 用法描述
返回
- 混合 - 标志值的引用
方法:Flags->getDefaults
function getDefaults()
返回所有定义的命令行标志的默认值,作为一个格式化的字符串。
示例
-v Output in verbose mode
--testsuite [string] Which test suite to run.
--bootstrap [string] A "bootstrap" PHP file that is run before the specs.
--help Display this help message.
--version Display this applications version.
返回
- 字符串
方法:Flags->parse
function parse([ array $args = null [, $ignoreExceptions = false [, $skipFirstArgument = null]]])
从参数列表中解析标志定义,应包括命令名称。
必须在定义所有标志之后和程序访问标志之前调用。
如果缺少必需的标志、未知标志或标志类型不正确,将抛出异常
参数
- 数组
$args
- 要解析的参数。默认为构造函数中定义的参数。 - 布尔值
$ignoreExceptions
- 设置为true会导致即使在抛出异常后解析也会继续。 - 布尔值
$skipFirstArgument
- 选项将第一个参数解析为参数而不是命令。默认为构造函数值
方法:Flags->parsed
function parsed()
如果命令行标志已被解析,则返回true。
返回
- 布尔值