pete-otaqui/clip-clop

基于 getopt() 的 PHP 选项解析器

dev-master 2016-04-04 19:04 UTC

This package is not auto-updated.

Last update: 2024-09-20 19:04:00 UTC


README

基于 getopt() 的 PHP 选项解析器。

ClipClop 允许您轻松创建具有选项的命令行工具。ClipClop 会自动生成格式良好的使用说明,并提供方便的 API 用于访问参数和值。

ClipClop 处理必填和可选参数及其值。因此,给定的选项如 "--verbose" 可以是必填的,也可以是可选的,它可以没有参数值或有一个可选的或必填的值。

ClipClop 管理多个值,尽管默认情况下强制单个值,但可以针对正则表达式进行验证,并为您解析某些类型:整数、数字、JSON 和 URL。

快速示例

创建一个名为 "environment_test" 的脚本,包含以下代码

#!/usr/bin/env php
<?php

// do this unless you have setup an Autoloader
require_once('/path/to/ClipClop.php');

$clipclop = new ClipClop();

$clipclop->addOption(array(
    'short' => 'e', // shortname, i.e. "-e"
    'long' => 'environment', // longname, i.e. "--environment"
    'value' => TRUE, // A value must be given such as "--environment=TEST"
    'help' => 'Set the environment', // help text for the 'usage' text
    'required' => TRUE, // Environment must be provided
));

// as soon as we ask for an option, ClipClop will parse CLI arguments with getopt()

$environment = $clipclop->getOption('e'); // returns the value set for 'e' OR 'environment'

print "You ran this script with environment: $environment";
?>

使脚本可执行

$ chmod +x environment_test

现在您可以从命令行如下运行此脚本

$ ./environment_test --environment=TEST

您应该看到类似以下输出:您以环境:TEST 运行了此脚本

API

addOption($option_array)

当添加选项时,所有键都是可选的,但许多组合将(相当明显)无效,即没有短名或长名的选项。键可以设置在参数数组中

  • short - 参数的短名,例如 "e"
  • long - 参数的长名,例如 "environment"
  • value - TRUE 表示需要值,FALSE 表示可选,NULL 表示没有值
  • help - 显示此参数的帮助文本
  • required - 如果这是一个必填参数,则为 TRUE
  • type - "text"(默认值)、"integer"、"number"(用于浮点数)、"url"(返回 url_parse 的值)或 "json"(返回 json_decode 的值)之一
  • validate - 应设置为一个正则表达式,值必须匹配
  • multiple - 提供一个 "truthy" 值以支持多个值(即使单个值也会通过 getOption 返回数组)
  • default - 允许为当参数未提供时设置默认值。

setCommandName($name) / getCommandName()

设置/获取用于用法输出的命令名称

setCommandHelp($help) / getCommandHelp()

设置/获取用于用法输出的命令帮助

parseGetOpts($getopt_style_array)

使用此方法提供手动选项集(格式与 getopt 返回的格式相同)。对于测试或其他覆盖 getopt() 的方法很有用。

getUsage()

返回用法文本的字符串

usage($code=NULL, $message=NULL)

打印出用法文本,前面可以有一个可选的额外消息,并且可以选择性地使用提供的退出代码退出脚本(例如,0 表示“正常”,>0 表示“错误”)

getOption($short_or_long_name)

返回解析的选项值(如果参数多次提供,则返回解析值的数组)。无论提供的是短名还是长名版本,都将返回正确的值。

getOptions()

返回一个所有选项的数组,键为名称。对于具有长名和短名的选项,值会在两个键之间复制,因此您仍然可以从短名或长名访问。

setWidth($width) / getWidth()

设置/获取用法输出的当前宽度

setMinimumHelpWidth($width) / getMinimumHelpWidth()

设置/获取用法输出中 "帮助" 部分的当前最小宽度

setPrinter(ClipClop_Printer_Interface $printer) / getPrinter()

设置/获取打印用法文本的类(适用于测试)

setQuitter(ClipClop_Quitter_Interface $printer) / getQuitter()

设置/获取终止脚本的类(适用于测试)