1. Go to this page and download the library: Download rockett/pipeline library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
$pipeline = (new Pipeline)->pipe(static function ($traveler) {
return $traveler * 10;
});
use Rockett\Pipeline\Pipeline;
use Rockett\Pipeline\Contracts\StageContract;
class TimesTwoStage implements StageContract
{
public function __invoke($traveler)
{
return $traveler * 2;
}
}
class PlusOneStage implements StageContract
{
public function __invoke($traveler)
{
return $traveler + 1;
}
}
$pipeline = (new Pipeline)
->pipe(new TimesTwoStage)
->pipe(new PlusOneStage);
$pipeline->process(10); // Returns 21
$processApiRequest = (new Pipeline)
->pipe(new ExecuteHttpRequest) // B
->pipe(new ParseJsonResponse); // C
$pipeline = (new Pipeline)
->pipe(new ConvertToPsr7Request) // A
->pipe($processApiRequest) // (B and C)
->pipe(new ConvertToDataTransferObject); // D
$pipeline->process(new DeleteArticle($postId));
use Rockett\Pipeline\Builder\PipelineBuilder;
// Prepare the builder
$pipelineBuilder = (new PipelineBuilder)
->add(new LogicalStage)
->add(new AnotherStage)
->add(new FinalStage);
// Do other work …
// Build the pipeline
$pipeline = $pipelineBuilder->build();
use Rockett\Pipeline\Processors\InterruptibleProcessor;
$processor = new InterruptibleProcessor(
fn($traveler) => $traveler->hasError()
);
$pipeline = (new Pipeline($processor))
->pipe(new ValidateInput)
->pipe(new ProcessData)
->pipe(new SaveToDatabase);
$output = $pipeline->process($request);
// Exit when condition is true
$processor = InterruptibleProcessor::continueUnless(
fn($traveler) => $traveler->hasError()
);
// Exit when condition becomes false
$processor = InterruptibleProcessor::continueWhen(
fn($traveler) => $traveler->isValid()
);
use Rockett\Pipeline\Processors\TapProcessor;
$processor = new TapProcessor(
beforeCallback: fn($traveler) => $logger->info('Processing:', $traveler->toArray()),
afterCallback: fn($traveler) => $metrics->increment('pipeline.stage.completed')
);
$pipeline = (new Pipeline($processor))
->pipe(new StageOne)
->pipe(new StageTwo)
->pipe(new StageThree);
$output = $pipeline->process($traveler);