Object that provides map, filter and other array related functions for any iterable instances (array, Iterator, Generator) in a simple fluent style.
use Marvin255\FluentIterable\FluentIterable;
use Marvin255\FluentIterable\Helper\Reducer;
use Marvin255\FluentIterable\Helper\Filter;
use Marvin255\FluentIterable\Helper\Compare;
$input = [1, 2, 3, 4];
$result = FluentIterable::of($input)
->skip(1)
->filter(Filter::compare(Compare::LESS_THEN, 4))
->map(fn (int $item): int => $item + 1)
->reduce(Reducer::sum())
->get();Install via composer:
composer req marvin255/fluent-iterableInitiate item using factory (any iterable instances are allowed)
$fluent = FluentIterable::of($input);Apply intermediate methods (merge, filter, map, skip, limit, sorted, peek, distinct, flatten)
$fluent = $fluent->map(fn (int $item): int => $item + 1)
->filter(Filter::compare(Compare::LESS_THEN, 4))
->skip(1);Get result using one of finalizing methods (walk, reduce, findByIndex, findOne, findFirst, findLast, toArray, getIterator, count, matchAll, matchNone, matchAny)
$result = $fluent->toArray();Methods that convert list to a single item (reduce, findOne, findByIndex, findFirst, findLast) return an Optional instance.
peek method might be used to show intermediate data.
use Marvin255\FluentIterable\FluentIterable;
use Marvin255\FluentIterable\Helper\Reducer;
use Marvin255\FluentIterable\Helper\Filter;
use Marvin255\FluentIterable\Helper\Compare;
$input = [1, 2, 3, 4];
$result = FluentIterable::of($input)
->filter(Filter::compare(Compare::LESS_THEN, 3))
->peek(
function (mixed $item): void {
var_dump($item);
}
)
->reduce(Reducer::sum())
->get();It will output something like
int(1)
int(2)