kentaro-a/phpcommander

PHP 命令行界面。易于处理标志和选项。

v1.1.0 2020-09-28 01:39 UTC

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)

详细说明

查看 示例