pitchart/transformer

PHP中的一种转换器实现,具有面向对象的力量

v1.6.2 2020-05-17 01:22 UTC

README

PHP中的一种转换器实现,具有面向对象的力量

本软件包受到了其他语言提供的库的启发,如clojure的转换器或JAVA流API。

为什么?

转换器是可组合的算法转换。它们独立于输入和输出源上下文,仅指定单个元素的转换本质。由于转换器与输入或输出源解耦,它们可以用于许多不同的过程 - 集合、流、通道、可观察对象等。转换器直接组合,无需关注输入或创建中间聚合。

关于clojure参考的更多信息

使用经典管道模式时,每个转换步骤都会遍历整个集合,并创建一个中间集合,这在内存使用上是一个巨大的浪费。

转换器使用函数组合来减少应用转换时进行的迭代次数。

安装

composer require pitchart/transformer

使用方法

一个转换由一系列转换函数(称为Reducer)组成,以一个减少函数(也称为终止)结束。

use function Pitchart\transform;

transform([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
    ->filter(function (int $integer) { return $integer % 2 === 0;})    // [0, 2, 4, 6, 8, 8, 6, 4, 2, 0]
    ->map(function (int $integer) { return $integer + 1; })    // [1, 3, 5, 7, 9, 9, 7, 5, 3, 1]
    ->dedupe()    // [1, 3, 5, 7, 9, 9, 7, 5, 3, 1]
    ->distinct()    // [1, 3, 5, 7, 9]
    ->take(3)     // [1, 3, 5]
    ->sum()    // 9
;

API文档

库使用的“函数模式”在Reducer文档中描述

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件