bertptrs/phpstreams

基于Java 8 Streams API的PHP流库。

v0.1.0 2016-07-18 13:31 UTC

This package is auto-updated.

Last update: 2024-09-28 01:35:49 UTC


README

Latest Stable Version Total Downloads License Build Status

Java 8 Streams API在PHP中的部分实现。PHPStreams可以使用您的生成器、数组以及任何可迭代的(可迭代)对象,并像使用Java Streams一样修改它们!

使用流和生成器,您可以在不将所有数据都放入内存或作用域的情况下轻松地对大量数据进行排序。流还可以通过(更多或更少)强制单一责任来简化代码结构。

该库与PHP 5.5.9及更高版本兼容。

安装

您可以使用Composer安装PHPStreams。只需在项目根目录中运行composer require bertptrs/phpstreams即可!

用法

使用流非常简单。比如,我们想得到斐波那契数列中的前7个奇数。要使用Streams来完成这个任务,我们执行以下步骤:

// Define a generator for Fibonacci numbers
function fibonacci()
{
    yield 0;
    yield 1;

    $prev = 0;
    $cur = 1;

    while (true) {
        yield ($new = $cur + $prev);
        $prev = $cur;
        $cur = $new;
    }
};

// Define a predicate that checks for odd numbers
$isOdd = function($num) {
    return $num % 2 == 1;
};

// Create our stream.
$stream = new phpstreams\Stream(fibonacci());

// Finally, use these to create our result.
$oddFibo = $stream->filter($isOdd)  // Keep only the odd numbers
    ->limit(8)                      // Limit our results
    ->toArray(false);               // Convert to array, discarding keys

文档

文档主要使用PHPDoc编写。如果有兴趣,我打算编写实际的文档。

贡献

我欢迎贡献和拉取请求。请注意,我遵循PSR-2(以及PSR-4用于自动加载)。此外,请随您的作品提交单元测试。

GrumPHP强制执行部分编码标准,但请努力使您的贡献结构良好。