leaveyou / console
一组无需 illuminate 框架开销的 console 相关组件
1.0.0
2017-04-04 08:11 UTC
This package is auto-updated.
Last update: 2024-09-17 23:35:25 UTC
README
一组用于解析命令行参数的 console 组件
特性
- 复杂参数识别
Parameters without value --verbose -v -vv -vvv
Optional parameters with value --optional=1970 -o=1970 -o1970 -o"1970"
Mandatory parameters with value --required=1970 -r=1970 -r1970 -r"1970" --required 1970 -r 1970 -r "1970"
- 自动生成帮助页面
$ php test.php --help
Asked for help page...
-o, --optional Some example of an optional parameter
-v, --verbose Whether verbose
--account This parameter doesn't have a description
--mandatory Mandatory parameter description. This should have one and only one value.
--help Shows this help message
- 依赖注入/容器就绪
- 改进了原生 PHP 函数
getopt()的不足- 如果定义为这样,则将
--version和-v视为相同参数。 - 强制参数确实是强制性的
- 可选参数不能有空值
- 允许预先指定参数是单个字符串还是字符串列表
- 可选参数的默认值
- @SOON: 支持尾随任意数据:在 PHP 5 中
php x.php -abc [TRAILING] [DATA]
- 如果定义为这样,则将
用法
<?php /** class importing */ use Leaveyou\Console\Input; use Leaveyou\Console\Parameter; use Leaveyou\Console\ParameterSet; use Leaveyou\Console\Tools\CommandLineParser; use Leaveyou\Console\Tools\Help; use Leaveyou\Console\Tools\ResultNormalizer; /** composer autoloader */ require_once "../vendor/autoload.php"; $normalizer = new ResultNormalizer(); $cmdParser = new CommandLineParser($normalizer); $helpGenerator = new Help(); $parameterSet = new ParameterSet(); $consoleInput = new Input($parameterSet, $cmdParser, $helpGenerator); /** Define parameters */ $simpleParameter = new Parameter("simple"); $complexParameter = Parameter::create("complex") ->setType(Parameter::TYPE_MANDATORY) ->setDescription("Some example of a complex parameter") ->setShortName('c') ->setValueType(Parameter::VALUE_STRING); /** Inject parameters */ $consoleInput->addParameter($simpleParameter); $consoleInput->addParameter($complexParameter); /** Read parameters */ $simple = $consoleInput->getValue('simple'); $complex = $consoleInput->getValue('complex');
然后只需运行 php test.php --simple="sure thing" --complex "yes" --complex "no"
Oops...
The "--complex" parameter can only be used once since the expected value must be a string.
-c, --complex Some example of a complex parameter
--simple This parameter doesn't have a description
--help Shows this help message
待办事项
- 制作列表
- 单元测试
- 将原生的 getopt() 调用替换为自定义实现
- 使存储库更符合 S.O.L.I.D. 原则
- 更好的帮助页面生成。当前的非常糟糕。
- 为这个列表找到更多的事情
- 生成命令摘要并显示可选参数和用法