sergiors/pipeline

Compose sequence of operations, immutable without side-effects

2.0.0 2017-04-19 12:49 UTC

This package is not auto-updated.

Last update: 2024-04-13 15:56:14 UTC


README

Scrutinizer Code Quality Code Coverage Build Status

Install

composer require sergiors/pipeline

How to use

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

You can use Sergiors\Pipeline\Reduce, Sergiors\Pipeline\Filter and Sergiors\Pipeline\Map to compose the pipeline more readable.

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

Motivation

Collection Pipeline

License

MIT