Via Composer
composer require descom/pipeline
Samples:
use Descom\Pipeline\PipeLine;
class SamplePipeline extends PipeLine
{}
SamplePipeline::getInstance()
->pipe(new DoubleStage())
->pipe(new IncreaseStage());
$payload = 10;
$payload = SamplePipeline::getInstance()
->process($payload); // return 21 (10 * 2) + 1
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);
}
}
composer test