programster/cli-menu

适用于PHP 5.3+的CLI应用程序的命令行菜单代码

2.1.2 2022-02-04 17:12 UTC

This package is auto-updated.

Last update: 2024-09-04 22:29:43 UTC


README

此软件包简化了在终端应用程序的CLI中创建菜单的过程。主要分为两种类型。

  • 操作菜单 - 打印出选项列表,选项将触发回调执行某些操作。例如退出程序或处理文件。
  • 值菜单 - 提示用户从有限集合中选择。例如输出本地文件列表,用户可以通过输入菜单选项索引而不是完整路径来选择文件。

安装

使用以下命令安装软件包:

composer require programster/cli-menu

示例代码

操作菜单

以下代码演示了您可以使用简单的闭包或可调用对象构建操作菜单

$overComplicatedPrintHelloWorldObject = new class {
    public function __invoke() {
        print PHP_EOL . "Hello world!" . PHP_EOL;
    }
};

$exitCallback = function() { die("Goodbye then!" . PHP_EOL); };
$sayHelloWorldOption = new \Programster\CliMenu\MenuOption("Print hello world", $overComplicatedPrintHelloWorldObject);
$exitOption = new \Programster\CliMenu\MenuOption("Exit", $exitCallback);
$cliMenu = new Programster\CliMenu\ActionMenu("My Action Menu", $sayHelloWorldOption, $exitOption);

while(true)
{
    $cliMenu->run();
}

值菜单

以下是一个基本示例,展示了我们如何获取用户想要设置的秒数

$possibleValues = array(
    new Programster\CliMenu\ValueOption("Seconds in a day", (60 * 60 * 24)),
    new Programster\CliMenu\ValueOption("Seconds in a week", (60 * 60 * 24 * 52)),
    new Programster\CliMenu\ValueOption("Seconds in a year", (60 * 60 * 24 * 365)),
);

$valueMenu = new Programster\CliMenu\ValueMenu("Pick your seconds amount", ...$possibleValues);

$chosenValue = $valueMenu->run();