Download the PHP package syberisle/pipeline without Composer
On this page you can find all versions of the php package syberisle/pipeline. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package pipeline
SyberIsle\Pipeline
This package provides a pipeline pattern implementation.
Pipeline Pattern
The pipeline pattern allows you to easily compose sequential stages by chaining stages.
In this particular implementation the interface consists of two parts:
- Pipeline
- Processor
- Stage
A pipeline consists of zero, one, or multiple stages. A Processor can process a payload against a pipeline. During the processing the payload will be passed to the first stage. From that moment on the resulting value is passed on from stage to stage.
In the simplest form, the execution chain can be represented as a foreach:
Effectively this is the same as:
Immutability
Pipelines are implemented as immutable stage chains. When you pipe a new stage, a new pipeline will be created with the added stage. This makes pipelines easy to reuse, and minimizes side-effects.
Usage
Operations in a pipeline, stages, can be anything that satisfies the callable
type-hint, as well as Stage or Pipeline interfaces. So closures and
anything that's invokable is okay.
Class based stages.
Class based stages are also possible. The Stage can be implemented which
ensures you have the correct method signature for the process
method.
Re-usable Pipelines
Because the PipelineInterface is an extension of the StageInterface pipelines can be re-used as stages. This creates a highly composable model to create complex execution patterns while keeping the cognitive load low.
For example, if we'd want to compose a pipeline to process API calls, we'd create something along these lines:
Pipeline Builders
Because pipelines themselves are immutable, pipeline builders are introduced to facilitate distributed composition of a pipeline.
The pipeline builders collect stages and allow you to create a pipeline at any given time.
Exception handling
This package is completely transparent when dealing with exceptions. In no case will this package catch an exception or silence an error. Exceptions should be dealt with on a per-case basis. Either inside a stage or at the time the pipeline processes a payload.
Credits
License
The MIT License (MIT). Please see License File for more information.