iry/cli

PHP CLI Helper

v1.0.6 2023-10-24 01:44 UTC

This package is auto-updated.

Last update: 2024-04-24 02:49:59 UTC


README

[中文] / English #简介

iry/Cli 可以简单实现 输出、输入、倒计时、绘制进度条、绘制表格、移动光标、清除屏幕、确认对话 等功能

可以轻松实现类似表单等输入功能:

如(input: stdin, 开关:confirm, select:select,radio:select单选模式, checkbox:select多选模式

安装

composer require iry/cli

使用方法

环境控制 【可选】

use ir\cli\Cli;
Cli::disableStyle(true|false)//是否禁用样式 默认false;
Cli::charset('gbk')//'utf-8', 'gbk', 'gb2312'//默认utf-8

示例

标准输入

stdin($msg,$validator,$processor);//等待并获取用户输入的数据

参数 类型 说明
$msg string 消息:等待用户输入前,输一条提示消息消息
$validator false/callable 验证器:用于验证用户输入的信息是否有效的方法
$processor false/callable 处理器:对用户输入的数据进行处理的方法
use ir\cli\Cli;
$numeric = Cli::stdin('请输入');//等待并获取用户输入的数据
$numeric = Cli::stdin('请输入数字',function($v){return preg_match('/^[0-9]+$/',$v);},'trim');
$numeric = Cli::stdin('请输入数字',function($v){return preg_match('/^[0-9]+$/',$v);},'trim');

标准输出 output($msg,$styleType)

打印到屏幕 支持彩色文字

参数 说明
$msg string/array 消息:等待用户输入前,输一条提示消息消息
$styleType string/array error,info,comment,question,highlight,warning,[前景色,背景色]
$msg数组模式可以设置复杂的彩色文字如下示例

示例

Cli::output('这是一个测试','success') 
Cli::output('这是一个测试','error')
Cli::output('这是一个测试',['purple','yellow'])
Cli::output([
    '这是',
    ['一个','error'],//使用error样式
    ['测试','yellow'],//使用info样式
    //string || ['$msg','$styleType']
]);

示例大致效果如下

这是一个测试:
这是一个测试:
这是一个测试:
这是一个测试

确认对话

confirm($msg,$validator,$processor);//Cli中 确认对话

参数 说明
$msg string 消息:等待用户输入前,输一条提示消息消息
return bool true/false

$msg

use ir\cli\Cli;
$confirm = Cli::confirm('你确认要删除吗?');

//效果如下
//你确认要删除吗?[y/n] _

列表选择

select($list,$colQty,$msg,$mul);

参数 说明
$list array 必须 可选清单
$colQty int 可选 列数,展示可选清单时,展示几列。默认:1
$msg string 可选 默认:请输入
$mul bool 可选 是否允许多选,默认:false

移动光标

cursorMove(方位,移动量) 方位:l:left r:right u:up, d:down

use ir\cli\Cli;
$confirm = Cli::cursorMove('u',3); //光标上移三行
$confirm = Cli::cursorMove('l',4); //光标左移4个字符

光标定位 (移动光标到指定位置)

cursorPosition(x,y) y行x列

use ir\cli\Cli;
$confirm = Cli::cursorPosition(3,5);//光标定位到5行第三个字符后面

clear

clear();//清除屏幕

wait (等待/倒计时/模拟loading 等场景)

wait(int $s 秒,string $msg 消息);

progressBar (进度条绘制)

progressBar(int $total 总量,int $current 当前量, string $msg 文本信息)