无需配置即可使用的命令行工具。

1.4.0 2018-02-19 19:32 UTC

This package is auto-updated.

Last update: 2024-08-29 05:06:06 UTC


README

ZeroConfig CLI 是一组 CLI 工具,使用 PHP 编写,无需配置即可运行。

codecov Packagist PHP from Packagist Packagist Phar

该软件包旨在提供一组便利方法,以创建 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

该软件包的 inputoutput 组件易于处理 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.

以下是可以使用的转换器。

链式转换器

虽然可以将转换器通过包装一个转换器到另一个中来进行链式操作,但还有便利的转换器链可以轻松 链式转换器

指南

通用文档