kentaro-a / phpcommander
PHP 命令行界面。易于处理标志和选项。
v1.1.0
2020-09-28 01:39 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^9.3
This package is not auto-updated.
Last update: 2024-09-23 20:34:38 UTC
README
易于处理通过 $argv 传递的标志和选项。标志和选项必须以 "-" 或 "--" 开头。如果您已经有任何类并且想要使用它来制作类似于 CLI 批次的操作,PHPCommander 可以让您轻松实现。
要求
- php >= 7.1
安装
$ composer require kentaro-a/phpcommander
如何使用
为命令创建标志
使用 new Flg(string $flg, bool $must=false, string $help="", array $validators=[]) 创建标志。您可以创建自定义验证器类,如预设验证器 ValidatorNotEmptyString。
$flg1 = new Flg("--param", true, "my parameter", [new ValidatorNotEmptyString("Flg --param doesn't permit blank.")]);
您可以创建实现 ProcedureInterface 的过程。
class EchoProcedure implements ProcedureInterface {
public function __invoke(array $flgs=[]) {
// Whatever you want.
echo $flgs["param"] ."\n";
}
}
创建命令
在创建过程后,您可以使用 new Command(string $command_name, ProcedureInterface $procedure, Flgs $flgs=null, string $description="") 将其设置到命令中。
$command_echo = new Command(
"echo",
new EchoProcedure(),
new Flgs([$flg1]),
"Simple echo parameter",
);
将命令添加到 Commander 并调用已注册的命令。
Commander::invoke 从 $argv 获取命令名称和选项,然后调用相关的 Procedure::__invoke()。
// Make instance.
$cli = new Commander($argv, [$command_echo]);
// you can also add other command by pushing into $commands or using add method like $cli->addCommand($command).
// Invoke procedure related on command name passed by $argv
$ret = $cli->invoke();
显示帮助信息。
您可以在没有任何参数的情况下显示已注册的命令列表。
$ php batch.php
您还可以在命令名称后传递保留的 flg,如 -h 或 --help,以显示帮助信息。
$ php batch.php echo -h(--help)
详细说明
查看 示例。