pitchart / transformer
PHP中的一种转换器实现,具有面向对象的力量
v1.6.2
2020-05-17 01:22 UTC
Requires
- php: >=7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.13
- phpunit/phpunit: ^6.2
This package is auto-updated.
Last update: 2024-09-20 20:56:56 UTC
README
PHP中的一种转换器实现,具有面向对象的力量
本软件包受到了其他语言提供的库的启发,如clojure的转换器或JAVA流API。
为什么?
转换器是可组合的算法转换。它们独立于输入和输出源上下文,仅指定单个元素的转换本质。由于转换器与输入或输出源解耦,它们可以用于许多不同的过程 - 集合、流、通道、可观察对象等。转换器直接组合,无需关注输入或创建中间聚合。
使用经典管道模式时,每个转换步骤都会遍历整个集合,并创建一个中间集合,这在内存使用上是一个巨大的浪费。
转换器使用函数组合来减少应用转换时进行的迭代次数。
安装
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)。有关更多信息,请参阅许可证文件。