hhpack / getopt
Hack中的选项解析
1.7.1
2019-04-15 03:29 UTC
Requires
- hhvm: >=3.21.0
- hhvm/hhvm-autoload: ^2.0
- hhvm/hsl: ^4.1
Requires (Dev)
- facebook/fbexpect: ^2.5
- hhvm/hacktest: ^1.5
README
基本用法
解析命令行参数的方法如下。
定义一个不带参数的选项,使用on函数。
定义一个带一个参数的选项,使用take_on函数。
use HHPack\Getopt as cli; final class Options { public bool $help = false; public bool $version = false; public string $fileName = 'test'; } $options = new Options(); $parser = cli\optparser([ cli\take_on([ '-n', '--name' ], 'NAME', 'file name', ($name) ==> { $options->fileName = $name; }), cli\on([ '-h', '--help' ], 'display help message', () ==> { $options->help = true; }), cli\on([ '-v', '--version' ], 'display version', () ==> { $options->version = true; }) ]); $args = $parser->parse($argv); if ($options->help === true) { echo 'help on', PHP_EOL; } if ($options->version === true) { echo 'version on', PHP_EOL; } if ($options->fileName !== 'test') { echo 'name = ', $fileName, PHP_EOL; }
CLI应用程序
如果您想创建CLI应用程序,我们建议使用ArgumentParser。
ArgumentParser实现了显示用法、程序版本的接口。
use HHPack\Getopt as cli; use HHPack\Getopt\App\{ ArgumentParser }; final class CliApplication { private bool $help = false; private bool $version = false; private string $fileName = 'test'; private ArgumentParser $argParser; public function __construct() { $this->argParser = cli\app('example', '1.0.0') ->description("This cli application is example.\n\n") ->usage(" {app.name} [OPTIONS]\n\n") ->options([ cli\on(['-h', '--help'], 'display help message', () ==> { $this->help = true; }), cli\on(['-v', '--version'], 'display version', () ==> { $this->version = true; }), cli\take_on(['-n', '--name'], 'NAME', 'file name', ($name) ==> { $this->fileName = $name; }) ]); } public function run(Traversable<string> $argv): void { $this->argParser->parse($argv); if ($this->help) { $this->argParser->displayHelp(); } else if ($this->version) { $this->argParser->displayVersion(); } else { echo "file name: ", $this->fileName, PHP_EOL; } } } (new CliApplication())->run($argv);
运行测试
composer install
composer test