PipelineFilterIterator library provides a flexible and powerful way to filter
and manipulate PHP Iterators
using a pipeline-based approach. It allows developers to apply multiple filters sequentially
in a clean and readable manner.
You can use SPL filters like
CallbackFilterIterator, RegexIterator or create your own filter by extending the
FilterIterator in simple way.
class EvenFilter extends FilterIterator
{
public function accept(): bool
{
return $this->current() % 2 === 0;
}
}composer require millancore/pipeline-iteratoruse Millancore\PipelineIterator\PipelineFilterIterator;
$arrayData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
/**
* Use with Iterator
* $iterator = PipelineFilterIterator::create(new ArrayIterator($arrayData))
*/
// Use with Array directly
$iterator = PipelineFilterIterator::createFromArray($arrayData)
->filter(EvenFilter::class)
->filter(CallbackFilterIterator::class, fn($value) => $value > 3)
->filter(RangeFilter::class, 5, 10);
foreach ($iterator as $value) {
echo $value; // Output: 6, 8, 10
}The first arguments MUST BE Iterator
class RangeFilter extends FilterIterator
{
public function __construct(
Iterator $iterator,
private readonly int $start,
private readonly int $end
) {
parent::__construct($iterator);
}
public function accept(): bool
{
return $this->current() >= $this->start && $this->current() <= $this->end;
}
}Filter CSV File using Generator
The MIT License (MIT). Please see License File for more information.