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