Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sergiors/pipeline
Compose sequence of operations, immutable without side-effects
https://github.com/sergiors/pipeline
functional-programming php7 pipeline
Last synced: about 2 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 (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-04-19T13:06:59.000Z (over 7 years ago)
- Last Synced: 2024-10-28T07:35:36.122Z (2 months ago)
- Topics: functional-programming, php7, pipeline
- Language: PHP
- Homepage:
- Size: 13.7 KB
- Stars: 19
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Pipeline
--------
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/sergiors/pipeline/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/sergiors/pipeline/?branch=master)
[![Code Coverage](https://scrutinizer-ci.com/g/sergiors/pipeline/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/sergiors/pipeline/?branch=master)
[![Build Status](https://scrutinizer-ci.com/g/sergiors/pipeline/badges/build.png?b=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