millancore/pipeline-iterator 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

millancore/pipeline-iterator

最新稳定版本:1.0.2

Composer 安装命令:

composer require millancore/pipeline-iterator

包简介

Pipeline Iterator Filter

README 文档

README

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;
    }
}

Installation

composer require millancore/pipeline-iterator

Usage

use 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
}

Filters with arguments

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;
    }
}

Examples

Filter CSV File using Generator

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 126
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 2
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-11-22