ride / lib-cli
Ride 框架的 CLI 库
1.2.0
2024-06-26 07:26 UTC
README
PHP Ride 框架的 CLI 库。
命令
命令 接口是您用来扩展 CLI 的接口。它包含了您动作的逻辑。
您可以查看这个命令的代码示例
<?php use ride\library\cli\command\AbstractCommand; class MyCommand extends AbstractCommand { public function __construct() { parent::__construct('name', 'description'); // Define a required argument $this->addArgument('arg1', 'description'); // Define a optional argument $this->addArgument('arg2', 'description', false); // Define a dynamic argument // The value is the rest of the command line. // There are no more arguments allowed after a dynamic one $this->addArgument('arg3', 'description', false, true); // Define a flag (always optional) $this->addFlag('flag', 'description'); } public function execute() { // Get the defined input values $arg1 = $this->input->getArgument('arg1'); $arg2 = $this->input->getArgument('arg2', 'default'); $arg3 = $this->input->getArgument('arg3'); $flag = $this->input->getFlag('flag'); if ($this->input->isInteractive()) { // Interactive shell, read some input interactive $arg4 = $this->input->read($this->output, 'my prompt: '); } // Write some output $this->output->write("output"); $this->output->writeLine("output line"); $this->output->writeError("error output"); $this->output->writeErrorLine("error output line"); } }
代码示例
查看这个代码示例来创建从这个库生成的 CLI
<?php use ride\library\cli\command\CommandContainer; use ride\library\cli\input\PhpInput; use ride\library\cli\output\PhpOutput; use ride\library\cli\Cli; use ride\library\cli\CommandInterpreter; // Create a command container and add some commands to it $commandContainer = new CommandContainer(); $commandContainer->addCommand(new MyCommand()); // the command from previous sample // Create a command interpreter from the container $commandInterpreter = new CommandInterpreter($commandContainer); // Create your input and output interface $input = new PhpInput(); // ReadlineInput for interactive shell with auto completion and history $output = new PhpOutput(); // and create and run the cli $cli = new Cli($commandInterpreter); $cli->setInput($input); // input for the commands $cli->setOutput($output); $cli->run($input); // input for the CLI, you can use ArgumentInput to parse the command line // exit with a proper code exit($cli->getExitCode());