Skip to content

Compose sequence of operations, immutable without side-effects

Notifications You must be signed in to change notification settings

sergiors/pipeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pipeline

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

About

Compose sequence of operations, immutable without side-effects

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages