-
Notifications
You must be signed in to change notification settings - Fork 48
v3 upgrade to v4
Inhere edited this page Oct 18, 2021
·
8 revisions
推荐升级到 v4 版本,v4使用上更加简单易用
大部分都是兼容的,唯有选项参数的解析、绑定变动较大。之前获取输入参数、选项都是通过 Input 对象,v4 重构了选项参数的解析。
升级改动说明:
- PHP 版本需要
7.3+
- 将原来的
$input->getXXXOpt()
替换为$fs->getOpt()
- 将原来的
$input->getXXXArg()
替换为$fs->getArg()
- 方法上的
@options
@arguments
注释内容会被严格解析,因此名称和后面的规则至少需要间隔两个空格
v4示例 - 通过注释绑定选项参数:
/**
* show next execution datetime for an cron expression.
*
* @arguments
* expression string;The cronTab expression. eg: `20 10 * * *`;required
*
* @options
* -n, --next int;Show next number exec datetime. default number is 3.
* -p, --prev bool;Show previsions exec datetime
*
* @param FlagsParser $fs
* @param Output $output
*
* @throws Exception
*/
public function someCommand(FlagsParser $fs, Output $output): void
{
$expr = $fs->getArg('expression'); // will get string value
$prev = $fs->getOpt('prev'); // will get bool value
$nextNum = $fs->getOpt('next', 3); // will get int value
$output->colored('Cron Expression: ' . $expr);
}
v4示例 - 通过 FlagsParsr
对象绑定选项参数:
/**
* Configure for the subcommand `some`
*/
protected function someConfigure(): void
{
// 在独立命令里
// $fs = $this->getFlags();
// 在group的子命令里
$fs = $this->getActionFlags();
$fs->addArg('topic', 'The language/topic for search. eg: go, php, java, lua, python, js ...');
$fs->addArg('question', 'The question search.');
$fs->addOpt('search', 's', 'search by the keywords');
// $fs->addOpt('T', 't', 'query');
$fs->setMoreHelp(<<<HELP
<b>Special pages</b>
There are several special pages that are not cheat sheets. Their names start with colon and have special meaning.
.... ...
HELP
);
$fs->setExampleHelp([
'{fullCmd} go reverse list'
]);
}
我的其他PHP项目
- inhere/kite 方便本地开发和使用的个人CLI工具应用
- php-toolkit/pflag PHP编写的,通用的命令行标志(选项和参数)解析库
- phppkg/easytpl 使用简单且快速的 PHP 模板引擎
- inhere/php-validate 一个简洁小巧且功能完善的php验证库
- inhere/sroute 轻量且快速的HTTP请求路由库