https://github.com/sergiors/pipeline
Compose sequence of operations, immutable without side-effects
https://github.com/sergiors/pipeline
functional-programming php7 pipeline
Last synced: 3 months ago
JSON representation
Compose sequence of operations, immutable without side-effects
- Host: GitHub
- URL: https://github.com/sergiors/pipeline
- Owner: sergiors
- Created: 2016-06-27T21:28:06.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-04-19T13:06:59.000Z (about 8 years ago)
- Last Synced: 2025-04-24T02:12:21.148Z (3 months ago)
- Topics: functional-programming, php7, pipeline
- Language: PHP
- Homepage:
- Size: 13.7 KB
- Stars: 19
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Pipeline
--------
[](https://scrutinizer-ci.com/g/sergiors/pipeline/?branch=master)
[](https://scrutinizer-ci.com/g/sergiors/pipeline/?branch=master)
[](https://scrutinizer-ci.com/g/sergiors/pipeline/build-status/master)Install
-------
```bash
composer require sergiors/pipeline
```How to use
----------```php
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);
``````php
$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.
```php
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](http://martinfowler.com/articles/collection-pipeline/)License
-------
MIT