tflori / hugga
用于控制台应用的库,具有输入和输出处理功能
v1.2.0
2023-06-01 20:11 UTC
Requires
- php: ^7.1 || ^8.0
- ext-mbstring: *
- ext-readline: *
- nicmart/string-template: ^0.1.1
- psr/log: ^1.0
Requires (Dev)
Suggests
- ext-posix: *
This package is auto-updated.
Last update: 2024-09-03 22:09:15 UTC
README
PHP库,用于控制台应用。它支持消息和表格的格式化,以及具有选择的输入处理。
安装
像所有我的库一样:仅通过composer
$ composer require tflori/hugga
基本用法
<?php $console = new Hugga\Console; $name = $console->ask('What is your name?'); $console->line('${fg:white;bg:white;bold}Nice to meet you ' . $name . '!'); $console->line('You will see this', Hugga\Console::WEIGHT_NORMAL); $console->line('You will not see this', Hugga\Console::WEIGHT_LOWER); $console->increaseVerbosity(); $console->line('No you can see this', Hugga\Console::WEIGHT_LOWER); $console->line('But this is just a debug message', Hugga\Console::WEIGHT_DEBUG); //$console->setVerbosity(Hugga\Console::WEIGHT_DEBUG); //$console->debug( // ['key' => 'value', 'recursive' => ['string', 42, null, true]], // Hugga\Console::DEBUG_PRETTY ^ Hugga\Console::DEBUG_COLOR // );
文档
目前还没有其他文档,只有这个API参考。也可以查看examples/test.php示例,并尝试使用php vendor/tflori/hugga/examples/test.php
运行它们。
此外,还有一个示例,展示如何使用现有功能创建分页表格,见examples/paginated-table.php。
功能
一些功能仍在计划中,但许多功能已可用,足以开始使用并替换symfony/console。
输出处理
- 绘图:一种机制,使输出保持在底部,同时其他输出在上部打印(时钟、进度条等)
- 加权输出:仅输出,hugga将处理用户是否希望看到它(详细程度)
- 格式化输出:使用组合表达式轻松格式化(例如:
${red;bold}text${r}
) - 输出表格:易于使用的表格,具有许多格式化功能
- 预定义格式:配置一次格式,以后所有表格都会使用
- 边框:启用或禁用边框(内部边框:行之间)
- 填充:单元格内的左右填充
- 重复标题:每第n行重复标题
- 标题样式:定义用于标题的样式
- 进度条:具有8个步骤(utf-8)和其他格式化功能的平滑进度条
- 不确定:在边缘之间旋转的throbber
- 更新率:而不是定义进度条应该在多少步骤后更新(symfony/console),您定义在重绘之前需要经过多少时间
- 字符:更改进度条使用的字符
- throbber:更改用于不确定进度条的throbber
- 浮点步骤:使用浮点数字
输入处理
- InputObserver:直接访问键盘,无需将输出写入控制台
- 编辑行修复:编辑行(read line的替代品)不能读取单个按键
- ReadLine:如果可用,使用read line从stdin读取
- 读取字符:读取特定数量的字符(多字节安全)
- 读取直到:读取输入,直到出现特定字符串(例如:
\n.\n
) - 简单问题:具有默认值的简单问题
- 确认:具有y(是)和n(否)选择的简单问题(字符可以更改)
- 选择:选择列表中的选项的问题
- 默认为交互式:使用光标键选择,并使用InputObserver选择
- 回车键:返回键而不是值(关联数组默认值)
- 限制:更改可见选项的限制(交互式版本)
计划中的功能
- 调试输出:以高亮显示并以人类可读的格式输出变量
- 交互式表格:使用光标键滚动表格并分页