donatj/flags

GNU风格的PHP命令行参数解析器

v1.5.0 2022-11-24 12:58 UTC

This package is auto-updated.

Last update: 2024-08-27 18:41:56 UTC


README

Latest Stable Version Total Downloads License Build Status

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。

返回
  • 布尔值