sergiors/pipeline

组合操作序列,无副作用且不可变

2.0.0 2017-04-19 12:49 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:47:33 UTC


README

Scrutinizer Code Quality Code Coverage Build Status

安装

composer require sergiors/pipeline

如何使用

use Sergiors\Pipeline\Pipeline;

$pipeline = (new Pipeline)
    ->pipe(function ($payload) {
        return $payload + 2;
    })
    ->pipe(function ($payload) {
        return $payload * 2;
    });

echo $pipeline(10); // => 24
// echo $pipeline->process(10);
$pipeline = (new Pipeline)
    ->pipe(function ($payload, $container) {
        ...
    })
    ->pipe(function ($payload, $container) {
        ...
    });

$container = ...;
$pipeline(10, $container);

您可以使用Sergiors\Pipeline\ReduceSergiors\Pipeline\FilterSergiors\Pipeline\Map来使管道更易于阅读。

use Sergiors\Pipeline\Pipeline;
use Sergiors\Pipeline\Filter;

$getOrgs = (new Pipeline)
    ->pipe(new Filter(function ($org) {
        return $org instanceof OrgInterface;
    }));

// an array with OrgInterface and UserInterface objects
$users = [...];

print_r($getOrgs($users));

动机

集合管道

许可证

MIT