pete-otaqui / clip-clop
基于 getopt() 的 PHP 选项解析器
Requires
- php: >=5.2.0
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()
设置/获取终止脚本的类(适用于测试)