sugarcraft/sugar-readline
最新稳定版本:v0.2.0
Composer 安装命令:
composer require sugarcraft/sugar-readline
包简介
PHP port of erikgeiser/promptkit — interactive line-editing prompt library. Supports text input with validation/completion/hidden-password mode, selection prompts with filtering/pagination/cursor navigation, confirmation prompts, and textarea multi-line input.
README 文档
README
SugarReadline
PHP port of erikgeiser/promptkit — interactive line-editing prompt library for terminal UIs.
Features
- TextPrompt — single-line input with validation, auto-completion, hidden/password mode, char limit, default value
- SelectionPrompt — filtered list with cursor navigation and pagination
- MultiSelectPrompt — filtered multi-choice with min/max enforcement and FIFO rollover at the cap
- ConfirmationPrompt — yes/no with customizable labels, decoupled select-vs-submit
- TextareaPrompt — multi-line text input with line/column cursor and optional max-line cap
- Pure renderer — every method returns a new immutable instance;
view()returns ANSI strings,value()returns the data
Install
composer require sugarcraft/sugar-readline
Quick Start
Text Prompt
use SugarCraft\Readline\{Key, TextPrompt}; $p = TextPrompt::new('Enter your name: ') ->withDefault('Anonymous') ->withCompletions(['Alice', 'Bob', 'Carol']); $p = $p->handleChar('A')->handleChar('l')->handleKey(Key::Tab)->submit(); echo $p->value(); // 'Alice'
Selection Prompt
use SugarCraft\Readline\SelectionPrompt; $p = SelectionPrompt::new('Choose a fruit:', ['Apple', 'Banana', 'Cherry', 'Date']) ->withFilter('an'); // Banana matches echo $p->selectedValue(); // 'Banana'
Multi-Select Prompt
use SugarCraft\Readline\{Key, MultiSelectPrompt}; $p = MultiSelectPrompt::new('Pick:', ['A', 'B', 'C']) ->withMinSelections(1) ->handleKey(Key::Space) // mark A ->handleKey(Key::Down) ->handleKey(Key::Space) // mark B ->handleKey(Key::Enter); // submit (min satisfied) print_r($p->selectedValues()); // ['A', 'B']
Confirmation Prompt
use SugarCraft\Readline\{ConfirmationPrompt, Key}; $p = ConfirmationPrompt::new('Delete file?') ->handleKey('n') // selects No (does not auto-submit) ->handleKey(Key::Left) // changes mind back to Yes ->submit(); echo $p->result() ? 'yes' : 'no'; // 'yes'
Key Bindings
The SugarCraft\Readline\Key class exposes symbolic constants for every supported key.
Key::Left/Key::Right— move cursor (text input)Key::Up/Key::Down— navigate selection list / change line in textareaKey::PageUp/Key::PageDown— page through long listsKey::Home/Key::End— jump within the current line / listKey::Enter— submit text or select current choiceKey::Space— toggle mark in multi-selectKey::Tab— auto-complete or toggle confirmation valueKey::Backspace/Key::Delete— delete charactersKey::CtrlU/Key::CtrlK— delete to start / end of lineKey::Escape/Key::CtrlC— abort
Submit / Abort Semantics
Each prompt is a state machine with three states: pending, submitted, aborted.
submit()finalises the prompt; forMultiSelectPromptit only succeeds whencanSubmit()is true.abort()(or feedingKey::Escape/Key::CtrlC) discards the prompt;value()/selectedValues()then return empty.isSubmitted()/isAborted()report status;currentValue()(Confirmation) andselectedValue()(Selection) reflect the current cursor regardless of submission state.
License
sugarcraft/sugar-readline 适用场景与选型建议
sugarcraft/sugar-readline 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 07 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「input」 「prompt」 「readline」 「interactive」 「selection」 「tui」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 sugarcraft/sugar-readline 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sugarcraft/sugar-readline 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 sugarcraft/sugar-readline 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Async, event-driven console input & output (STDIN, STDOUT) for truly interactive CLI applications, built on top of ReactPHP
The Hoa\Console library.
Yii2 map input widget. Allows you to select geographcal coordinates via a human-friendly inteface.
Widget to add a remaining character counter to text inputs and textareas
Reauthenticate users by letting them re-enter their passwords for specific parts of your app.
Async, event-driven console input & output (STDIN, STDOUT) for truly interactive CLI applications, built on top of ReactPHP
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 46
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-05-07