martijnvdb / php-cli
PHP的命令行界面库
This package is auto-updated.
Last update: 2024-09-13 02:08:26 UTC
README
这个库可以帮助你快速创建CLI应用程序。
安装
您可以通过composer安装此包
composer require martijnvdb/php-cli
使用
将composer自动加载器添加到您的应用程序中,并创建CLI类的新实例。要运行应用程序,请使用run()方法。此示例将放置在名为myapp的文件中(没有.php扩展名)。
require __DIR__ . '/vendor/autoload.php'; use Martijnvdb\PhpCli\Cli; $cli = (new Cli('First CLI App', '0.1.0'))->run();
要向应用程序添加默认命令,请使用add()方法。将回调函数作为第一个参数使用。此回调函数将不带任何额外参数被调用。要执行脚本,请运行php myapp。
$cli = new Cli('First CLI App', '0.1.0'); $cli->add(function ($input, $output) { // ... }) ->run();
add()方法还可以用于向您的应用程序注册命令。此示例将在运行php myapp helloworld时执行。
$cli = new Cli('First CLI App', '0.1.0'); $cli->add('helloworld', function ($input, $output) { // ... }) ->run();
使用$options变量
$options对象将包含所有命令行参数。您可以使用all()和get()方法检索值。在运行php myapp helloworld --message "Hello, World!"'时,示例将返回以下内容。
$cli->add('helloworld', function ($options, $output) { // This will return all options $options = $options->all(); // This will return the value of the '--message' option $message = $options->get('--message'); // Will return the value of the '--message' or '-m' option $message = $options->get('--message', '-m'); // $options = ["--message" => "Hello, World!"]; // $message = "Hello, World!"; })
使用$output变量
$output对象可以帮助您格式化输出。
BB代码
此库支持自定义版本的BB代码,以帮助您样式化输出。只要标签以开标签和闭标签开始,您就可以混合匹配任何标签。
$output->line('[bold]Bold Text[/bold]'); $output->line('[red]Red Text[/red]'); $output->line('[bg:green]Green Background[/bg:green]'); $output->line('[bg:white][magenta][italic]Italic magenta text on a white background[/italic][/magenta][/bg:white]');
样式
这些将更改文本样式。
[bold],[b],[dim],[italic],[i],[underline],[u],[blink],[inverse],[reverse],[invisible],[strikethrough],[s]
文本颜色
这些将更改文本颜色。
[black],[red],[green],[yellow],[blue],[magenta],[cyan],[white]
背景颜色
这些将更改文本的背景颜色。
[bg:black],[bg:red],[bg:green],[bg:yellow],[bg:blue],[bg:magenta],[bg:cyan],[bg:white]
$output方法
$output对象包含以下方法
基本文本
四个基本文本输出方法。它们之间的唯一区别在于它们处理换行的方式。
$output->echo(string $value = ''); $output->line(string $value = ''); $output->lines(array $lines = []); $output->paragraph(string $value = '');
版本
输出应用程序的当前版本。
$output->version();
列
输出格式化的列。变量$rows是一个包含数组的数组,其中每个条目是一个单元格。变量$column_styles允许您使用相同的样式来格式化整个列。您应使用不带括号的BB代码来执行此操作。
$output->columns(string $label, array $rows = [], array $column_styles = []);
查看examples/generate以了解如何使用这些方法的示例。
输入辅助类
此库还包含一个辅助类,允许应用程序轻松获取用户的特定输入。
$input = Input::text(string $label)->get(); $input = Input::number(string $label)->get(); $input = Input::url(string $label)->get(); $input = Input::email(string $label)->get(); $input = Input::choice(string $label, array $options)->get();
选择输入辅助类的示例
$input = Input::choice('[yellow]Select an option[/yellow] [green](1/2/3)[/green]:', [ '1' => 'Option 1', '2' => 'Option 2', '3' => 'Option 3' ]) ->required() ->setDefault('1') ->get();
输入方法
强制用户输入
如果提供的输入为空,则将显示一个必填消息。
$input->required(string $message);
设置默认值
如果用户没有提供输入,则返回提供的默认值。
$input->setDefault($default);
设置无效消息
当用户输入无效输入时将显示的消息。
$input->setInvalidMessage(string $message);
设置输入样式
$options 数组可以填充不带括号的 BB 代码标签(例如:['red', 'bold'])。
$input->inputStyling($options = []);
进度辅助类
Progress 类在控制台显示进度条。使用介于 0 和 1 之间的浮点数作为 set() 方法的参数,可以设置进度条的当前百分比。进度条还会显示运行时间和预计剩余时间(ETA)。start() 方法将启动这些值的计时器。 stop() 方法将停止计时器和进度条。
$progress = Progress::new(); $progress->start(); $progress->set(0.25); $progress->set(0.5); $progress->set(0.75); $progress->set(1); $progress->stop();
进度自定义
您可以使用 size()、foreground() 和 background() 方法来自定义进度条的外观。
// Default size $progress->size(30); // Default templates $progress->foreground('[bg:white][invisible]|[/invisible][/bg:white]'); $progress->background('[bg:240][invisible].[/invisible][/bg:240]');