descom/pipeline

pipeline to inject plugins

2.3.0 2024-04-18 14:49 UTC

README

tests analyze styles

Install

Via Composer

composer require descom/pipeline

Usage

Create Stages

Samples:

Create Pipeline

use Descom\Pipeline\PipeLine;

class SamplePipeline extends PipeLine
{}

Configure plugin to add Stages

    SamplePipeline::getInstance()
        ->pipe(new DoubleStage())
        ->pipe(new IncreaseStage());

Process pipeline to transform data in core

    $payload = 10;

    $payload = SamplePipeline::getInstance()
        ->process($payload); // return 21 (10 * 2) + 1

Options

Perhaps you need to add options to the stages, for example, the number of times to double the value. You can call method with to add options to the stages.

    $payload = 10;

    $payload = SamplePipeline::getInstance()
        ->process($payload, [
            'twiceDouble' => 3,
            'twiceIncrease' => 2
        ]); // return 82 (10 * 2 ^ 3) + (1 + 1)

You can define DoubleStage as:

class DoubleStage extends Stage
{
    public function handle($payload): int
    {
        $twiceDouble = $this->option('twiceDouble') ?? 1;

        return $payload * pow(2, $twiceDouble);
    }
}

Testing

composer test