zero-config / cli
无需配置即可使用的命令行工具。
1.4.0
2018-02-19 19:32 UTC
Requires
- php: ^7.1
- ext-spl: ^7.1
Requires (Dev)
- ext-pcre: ^7.1
- ext-phar: ^2.0
- ext-zlib: ^7.1
- mediact/testing-suite: @stable
- mikey179/vfsstream: ^1.6
Suggests
- ext-pcre: To use PCRE transformers.
- ext-zlib: To handle Gzip encoded source files.
README
ZeroConfig CLI 是一组 CLI 工具,使用 PHP 编写,无需配置即可运行。
该软件包旨在提供一组便利方法,以创建 CLI 工具,无需设置框架或深入了解 PHP CLI 的内部工作原理。
按照设计,它解决了如何处理大数据流的问题。它基于输入数据、数据操作和输出数据的流程。无论是来自管道数据、本地文件还是 HTTP 资源,它都会逐行流式传输。
数据转换也是逐行进行的,输入和输出。同样,输出也是如此,无论是写入文件还是 STDOUT。
如果使用该库的组件构建应用程序,则应用程序在任何给定时刻只需在内存中保留一行资源数据。这将确实减少内存消耗,并确保大多数 CLI 解决方案中性能保持较高。
安装
要将构建工具的代码库安装为库
composer require zero-config/cli
或者,可以下载构建好的可执行文件作为 zc.phar。
确保执行权限正确,并将其放置在您的路径中
chmod +x zc.phar
sudo ln -s /path/to/zc.phar /usr/bin/zc
I/O
该软件包的 input 和 output 组件易于处理 I/O。
输入
输入来源被实现为生成器,因此可以逐行流式传输数据。
<?php use ZeroConfig\Cli\Reader\StandardIn; $pipe = new StandardIn(); // Echo what is piped to the application. foreach ($pipe as $line) { echo $line; }
输出
输出写入器期望可迭代数据,并且能够逐行写入数据;非常适合处理流式数据。
<?php use ZeroConfig\Cli\Writer\File; use ZeroConfig\Cli\Reader\ReaderInterface; $writer = new File('The.Zookeeper\'s.Wife.mp4'); /** @var ReaderInterface $movie */ $writer($movie);
转换器
转换器 可以用于在 输入 和 输出 之间减少、修改或增强数据。
以下是一个匹配过滤器的示例。它使用了 PCRE 模式。
<?php use ZeroConfig\Cli\Transformer\Pcre\MatchFilter; $transformer = new MatchFilter('/[Bb]a[rz]/'); $input = [ 'This is foo!', 'Greetings from bar :)', 'A wonderful day from baz.' ]; foreach ($transformer($input) as $line) { echo $line . PHP_EOL; }
上面的示例将输出
Greetings from bar :)
A wonderful day from baz.
以下是可以使用的转换器。
链式转换器
虽然可以将转换器通过包装一个转换器到另一个中来进行链式操作,但还有便利的转换器链可以轻松 链式转换器。