knobik/explorer-prompt
Composer 安装命令:
composer require knobik/explorer-prompt
包简介
README 文档
README
Laravel explorer style prompt based on laravel/prompts package. Build CLI table based explorers easily.
Installation
composer require knobik/explorer-prompt
Simple Example usage:
use function Knobik\Prompts\explorer; $result = explorer( items: [ [1, 'John Doe', 'john.doe@example.com'], [2, 'Jane Doe', 'jane.doe@example.com'], [3, 'Jan Kowalski', 'kowalski@example.com'], ], title: 'Hello from a explorer window', header: [ 'ID', 'Name', 'Email', ], ) ->prompt();
Filtering
You can filter on your data by pressing forward slash /.
Filtering prompt can be disabled by using disableFiltering method.
You can also create your custom filtering solution by providing an invokable class or function to the setFilterHandler method. Example class:
use Knobik\Prompts\ExplorerPrompt; class FilterHandler { public function __invoke(ExplorerPrompt $prompt, string $filter): array { if ($filter === '') { return $prompt->items; } return collect($prompt->items) ->filter(function ($item) use ($prompt, $filter) { $item = is_array($item) ? $item : [$item]; foreach (array_values($item) as $index => $column) { if ($prompt->getColumnFilterable($index) && str_contains($column, $filter)) { return true; } } return false; }) ->toArray(); } }
Advanced file explorer example:
use Knobik\Prompts\Key; use function Knobik\Prompts\explorer; function getDirectoryFiles(string $path): array { $files = collect(glob("{$path}/*")) ->mapWithKeys(function (string $filename) { return [ $filename => [ 'filename' => basename($filename), 'size' => filesize($filename), 'permissions' => sprintf('%o', fileperms($filename)), ] ]; }); if ($path !== '/') { $files->prepend([ 'filename' => '..', 'size' => null, 'permissions' => sprintf('%o', fileperms(dirname($path))) ], dirname($path)); } return $files->toArray(); } $path = '/var/www/html'; while (true) { $newPath = explorer( items: $this->getDirectoryFiles($path), title: $path, //fn(ExplorerPrompt $prompt) => $prompt->highlighted, header: [ 'File name', 'Size in bytes', 'Permissions' ], ) ->setCustomKeyHandler(Key::KEY_ESCAPE, function(ExplorerPrompt $prompt, string $key) { // custom key handler $prompt->cancel(); }) ->setColumnOptions( column: 2, width: 20, // number of characters, null to keep it in auto mode align: ColumnAlign::RIGHT, filterable: false ) ->prompt(); if ($newPath === null) { continue; // no item selected } $path = $newPath; if (is_file($path)) { $this->line(file_get_contents($path)); return self::SUCCESS; } }
knobik/explorer-prompt 适用场景与选型建议
knobik/explorer-prompt 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.49k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2024 年 03 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 knobik/explorer-prompt 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 knobik/explorer-prompt 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 5.49k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 12
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-03-08