tobento/service-iterable

可迭代对象和迭代器

1.0.0 2022-10-28 17:03 UTC

This package is not auto-updated.

Last update: 2024-09-29 00:21:17 UTC


README

可迭代辅助工具和在其他服务中使用的常见迭代器。

目录

入门

使用以下命令添加运行此命令的迭代服务项目的最新版本。

composer require tobento/service-iterable

要求

  • PHP 8.0 或更高版本

亮点

  • 框架无关,可与其他任何项目一起使用
  • 解耦设计

文档

可迭代对象

toArray

将任何可迭代对象转换为数组。

use Tobento\Service\Iterable\Iter;

$iterable = ['key' => 'value'];

$array = Iter::toArray(iterable: $iterable);

toIterator

将任何可迭代对象转换为迭代器。

use Tobento\Service\Iterable\Iter;
use Iterator;

$iterable = ['key' => 'value'];

$iterator = Iter::toIterator(iterable: $iterable);

var_dump($iterator instanceof Iterator);
// bool(true)

迭代器

分块迭代器

use Tobento\Service\Iterable\ChunkIterator;

$iterator = new ChunkIterator(
    iterable: range(1, 10),
    chunkLength: 2,
);

foreach($iterator as $chunk) {} // [1, 2], [3, 4], ...

修改迭代器

use Tobento\Service\Iterable\ModifyIterator;

$iterator = new ModifyIterator(
    iterable: range(1, 5),
    modifier: function(int $number): int {
        return $number * 10;
    }
);

foreach($iterator as $number) {} // 10, 20, ...

项目工厂迭代器

您可以使用项目工厂迭代器来初始化项目,并使用 Seeder 服务来生成模拟数据。

use Tobento\Service\Iterable\ItemFactoryIterator;
use Tobento\Service\Seeder\Str;
use Tobento\Service\Seeder\Arr;

$callable = function(): array {
    return [
        'name' => Str::string(10),
        'color' => Arr::item(['green', 'red', 'blue']),
    ];
};

$iterator = new ItemFactoryIterator(
    factory: $callable,
    create: 10
);

JSON 文件迭代器

use Tobento\Service\Iterable\JsonFileIterator;

$iterator = new JsonFileIterator(
    file: 'private/src/file.json',
);

foreach($iterator as $key => $item) {}

对于大型文件,您可以考虑使用Json Maschine

鸣谢