类 ConsoleOptionParser
处理命令行中的 ARGV 解析,并提供对 GetOpt 兼容选项定义的支持。为创建 shell 选项解析器提供一个构建器模式实现。
选项
命名参数有两种形式:长参数和短参数。长参数以两个 - 开头,并提供更详细的选项名称,例如 --version
。短参数以一个 - 开头,长度仅为一个字符。它们通常与长选项匹配,并提供更简洁的替代方案。
使用选项
选项可以使用长形式和短形式来定义。使用 $parser->addOption()
可以定义新选项。选项的名称用作其长形式,还可以使用 short
选项提供一个额外的短形式。短选项的长度应仅为一个字母。使用超过一个字母的短选项将引发异常。
调用选项可以使用与大多数 *nix 命令行工具类似的语法。长选项可以包含 =
或省略它。
cake my_command --connection default --name=something
短选项可以单独定义或分组定义。
cake my_command -cn
短选项可以像上面那样组合成组。组中的每个字母都将被视为单独的选项。上面的例子等同于
cake my_command -c -n
短选项也可以接受值
cake my_command -c default
位置参数
如果没有定义位置参数,则将解析所有位置参数。如果定义了位置参数,则任何超过定义的位置参数都将导致异常。此外,还可以通过将 required 参数设置为 false 来声明参数为可选参数。
$parser->addArgument('model', ['required' => false]);
提供帮助文本
通过为位置参数和命名参数提供帮助文本,ConsoleOptionParser 可以为您生成帮助显示。可以使用 --help
或 -h
开关查看 shell 的帮助信息。
属性摘要
-
$_args protected
arrayCake\Console\ConsoleInputArgument>
位置参数定义。
-
$_command protected
string
命令名称。
-
$_description protected
string
描述文本 - 在生成帮助信息时显示在选项之前
-
$_epilog protected
string
尾声文本 - 在生成帮助信息时显示在选项之后
-
$_options protected
array<string,Cake\Console\ConsoleInputOption>
选项定义。
-
$_shortOptions protected
array<string, string>
短 -> 长选项映射,在使用 addOption() 时生成
-
$_tokens protected
array
args(argv)数组。
-
$rootName protected
string
帮助输出中使用的根别名
方法摘要
-
__construct() public
构造一个 OptionParser,以便您可以定义其行为
-
_nextToken() protected
在 argv 集合中查找下一个标记。
-
_optionExists() protected
检查 $name 是否为其定义了选项(短/长)。
-
_parseArg() protected
解析一个参数,并确保参数不超过参数数量,并且参数是一个有效的选项。
-
_parseLongOption() protected
从 $this->_tokens 中解析长选项的值。将处理包含
=
的选项。 -
_parseOption() protected
通过其名称索引解析一个选项。
-
_parseShortOption() protected
从 $this->_tokens 中解析短选项的值。如果 $option 是多个快捷方式的组合,例如 -otf,则它们将被移到标记堆栈上并单独解析。
-
addArgument() public
向选项解析器添加位置参数。
-
addArguments() public
一次添加多个参数。接受一个参数定义数组。键用作参数名称,值用作参数的参数。
-
addOption() public
向选项解析器添加选项。选项允许您为控制台应用程序定义可选参数或必填参数。选项由它们使用的参数定义。
-
addOptions() public
一次添加多个选项。接受一个选项定义数组。键用作选项名称,值用作选项的参数。
-
argumentNames() public
获取参数名称列表。
-
arguments() public
获取解析器中定义的参数。
-
buildFromArray() public static
从数组构建一个解析器。使用类似于以下的数组
-
create() public static
用于创建新 OptionParsers 的静态工厂方法,以便您可以将方法链接到它们。
-
getCommand() public
获取 shell/task 的命令名称。
-
getDescription() public
获取 shell/task 的描述文本。
-
getEpilog() public
获取尾声。
-
help() public
获取此解析器对象的格式化帮助信息。
-
merge() public
获取或设置 shell/task 的命令名称。
-
options() public
获取解析器中定义的选项。
-
parse() public
将 argv 数组解析为一组参数和参数。
-
removeOption() public
从选项解析器中删除选项。
-
setCommand() public
设置 shell/task 的命令名称。
-
setDescription() public
设置 shell/task 的描述文本。
-
setEpilog() public
向解析器设置尾声。尾声在生成帮助信息时添加到选项和参数列表的末尾。
-
setRootName() public
设置 HelpFormatter 中使用的根名称
-
toArray() public
返回此解析器的数组表示形式。
方法详细信息
__construct() ¶ public
__construct(string $command = '', bool $defaultOptions = true)
构造一个 OptionParser,以便您可以定义其行为
参数
-
string
$command optional 此解析器所属的命令名称。命令名称用于生成帮助信息。
-
bool
$defaultOptions optional 是否要设置详细选项和静默选项。将此设置为 false 将阻止添加
--verbose
和--quiet
选项。
_optionExists() ¶ protected
_optionExists(string $name): bool
检查 $name 是否为其定义了选项(短/长)。
参数
-
string
$name 选项的名称。
返回
bool
_parseArg() ¶ protected
_parseArg(string $argument, array $args): list<string>
解析一个参数,并确保参数不超过参数数量,并且参数是一个有效的选项。
参数
-
string
$argument 要追加的参数
-
array
$args 要追加的解析后的参数数组。
返回
list<string>
抛出
Cake\Console\Exception\ConsoleException
_parseLongOption() ¶ protected
_parseLongOption(string $option, array<string, mixed> $params): array
从 $this->_tokens 中解析长选项的值。将处理包含 =
的选项。
参数
-
string
$option 要解析的选项。
-
array<string, mixed>
$params 要将解析后的值追加到的参数
返回
array
_parseOption() ¶ protected
_parseOption(string $name, array<string, mixed> $params): array<string, mixed>
通过其名称索引解析一个选项。
参数
-
string
$name 要解析的名称。
-
array<string, mixed>
$params 要将解析后的值追加到的参数
返回
array<string, mixed>
抛出
Cake\Console\Exception\ConsoleException
_parseShortOption() ¶ protected
_parseShortOption(string $option, array<string, mixed> $params): array<string, mixed>
从 $this->_tokens 中解析短选项的值。如果 $option 是多个快捷方式的组合,例如 -otf,则它们将被移到标记堆栈上并单独解析。
参数
-
string
$option 要解析的选项。
-
array<string, mixed>
$params 要将解析后的值追加到的参数
返回
array<string, mixed>
抛出
Cake\Console\Exception\ConsoleException
遇到未知的短选项时。
addArgument() ¶ public
addArgument(Cake\Console\ConsoleInputArgument|string $name, array<string, mixed> $params = []): $this
向选项解析器添加位置参数。
参数
help
要显示的此参数的帮助文本。required
此参数是否必填。index
参数的索引,如果未定义,则参数将放在参数末尾。如果你两次定义相同的索引,第一个选项将被覆盖。choices
此参数的有效选项列表。如果留空,所有值都将有效。当 parse() 遇到无效值时,将引发异常。
参数
-
Cake\Console\ConsoleInputArgument|string
$name 参数的名称。也可以接受 ConsoleInputArgument 实例。
-
array<string, mixed>
$params optional 参数的参数,见上文。
返回
$this
addArguments() ¶ public
addArguments(array<string, array<string, mixed>Cake\Console\ConsoleInputArgument> $args): $this
一次添加多个参数。接受一个参数定义数组。键用作参数名称,值用作参数的参数。
参数
-
array<string, array<string, mixed>Cake\Console\ConsoleInputArgument>
$args 要添加的参数数组。
返回
$this
另请参阅
addOption() ¶ public
addOption(Cake\Console\ConsoleInputOption|string $name, array<string, mixed> $options = []): $this
向选项解析器添加选项。选项允许您为控制台应用程序定义可选参数或必填参数。选项由它们使用的参数定义。
选项
short
- 此选项的单字母变体,如果无,则留空。help
- 此选项的帮助文本。在为选项生成帮助时使用。default
- 此选项的默认值。当附加选项未提供或没有值时,默认值将添加到解析后的参数中。使用 default 和 boolean 同时将不起作用。添加到解析后的参数中,当选项未定义时。默认为 null。boolean
- 选项不使用任何值,它只是一个布尔开关。默认为 false。如果选项定义为 boolean,它将始终添加到解析后的参数中。如果不存在,它将为 false,如果存在,它将为 true。multiple
- 选项可以多次提供。当启用此选项时,解析后的选项将是一个值数组。choices
此选项的有效选项列表。如果留空,所有值都将有效。当 parse() 遇到无效值时,将引发异常。
参数
-
Cake\Console\ConsoleInputOption|string
$name 你希望在解析选项时解析出值的长期名称。也可以接受 ConsoleInputOption 实例。
-
array<string, mixed>
$options optional 定义选项行为的参数数组
返回
$this
addOptions() ¶ public
addOptions(array<string, mixed> $options): $this
一次添加多个选项。接受一个选项定义数组。键用作选项名称,值用作选项的参数。
参数
-
array<string, mixed>
$options 要添加的选项数组。
返回
$this
另请参阅
arguments() ¶ public
arguments(): arrayCake\Console\ConsoleInputArgument>
获取解析器中定义的参数。
返回
arrayCake\Console\ConsoleInputArgument>
buildFromArray() ¶ public static
buildFromArray(array<string, mixed> $spec, bool $defaultOptions = true): static
从数组构建一个解析器。使用类似于以下的数组
$spec = [
'description' => 'text',
'epilog' => 'text',
'arguments' => [
// list of arguments compatible with addArguments.
],
'options' => [
// list of options compatible with addOptions
]
];
参数
-
array<string, mixed>
$spec 用它来构建 OptionParser 的规范。
-
bool
$defaultOptions optional 你是否希望设置详细和静默选项。
返回
static
create() ¶ public static
create(string $command, bool $defaultOptions = true): static
用于创建新 OptionParsers 的静态工厂方法,以便您可以将方法链接到它们。
参数
-
string
$command 此解析器所属的命令名称。命令名称用于生成帮助信息。
-
bool
$defaultOptions optional 你是否希望设置详细和静默选项。
返回
static
help() ¶ public
help(string $format = 'text', int $width = 72): string
获取此解析器对象的格式化帮助信息。
根据解析器中的描述、选项、参数和尾声生成帮助文本。
参数
-
string
$format optional 定义输出格式,可以是 text 或 XML
-
int
$width optional 格式化用户内容的宽度。默认为 72
返回
string
merge() ¶ public
merge(Cake\Console\ConsoleOptionParser|array $spec): $this
获取或设置 shell/task 的命令名称。
参数
-
Cake\Console\ConsoleOptionParser|array
$spec 要合并的 ConsoleOptionParser 或规范。
返回
$this
options() ¶ public
options(): array<string,Cake\Console\ConsoleInputOption>
获取解析器中定义的选项。
返回
array<string,Cake\Console\ConsoleInputOption>
parse() ¶ public
parse(array $argv, Cake\Console\ConsoleIo|null $io = null): array
将 argv 数组解析为一组参数和参数。
参数
-
array
$argv 要解析的参数(argv)数组。
-
Cake\Console\ConsoleIo|null
$io optional ConsoleIo 实例或 null。如果为 null,则提示选项将出错。
返回
array
抛出
Cake\Console\Exception\ConsoleException
遇到无效参数时。
removeOption() ¶ public
removeOption(string $name): $this
从选项解析器中删除选项。
参数
-
string
$name 要删除的选项名称。
返回
$this
setCommand() ¶ public
setCommand(string $text): $this
设置 shell/task 的命令名称。
参数
-
string
$text 要设置的文本。
返回
$this
setDescription() ¶ public
setDescription(list<string>|string $text): $this
设置 shell/task 的描述文本。
参数
-
list<string>|string
$text 要设置的文本。如果为数组,文本将使用 "\n" 进行拼接。
返回
$this
setEpilog() ¶ public
setEpilog(list<string>|string $text): $this
向解析器设置尾声。尾声在生成帮助信息时添加到选项和参数列表的末尾。
参数
-
list<string>|string
$text 要设置的文本。如果为数组,文本将使用 "\n" 进行拼接。
返回
$this
setRootName() ¶ public
setRootName(string $name): $this
设置 HelpFormatter 中使用的根名称
参数
-
string
$name 根命令名称
返回
$this