How to use pipelines in Laravel
How to use Pipeline in Laravel
<?php
namespace App\Pipelines\Stops;
use Closure;
class SecondStop
{
    protected $data;
    public function handle($data, Closure $next){
        
        //... process data
        
        //return closure to pipeline
        return $next($data);
    }
}<?php
namespace App\Pipelines;
use Illuminate\Pipeline\Pipeline;
class ProcessDataPipeline
{
    protected $pipeline;
    public function __construct()
    {
        //resolve by container
        $this->pipeline = app(Pipeline::class);
    }
    public function run($data){
        //Data to pass through pipeline
        $this->pipeline->send($data);
        //pipeline stops
        $this->pipeline->through([
            'App\Pipelines\Stops\FirstStop',
            'App\Pipelines\Stops\SecondStop'
        ]);
        //method on stops to process data
        //default: handle
        //$this->pipeline->via('handle');
        //process pipeline and direct result to a callbakc
        $result = $this->pipeline->then(function($data){
            return [
                'processed' => $data
            ];
        });
    }
}<?php
namespace App\Pipelines\Stops;
use Closure;
class FirstStop
{
    protected $data;
    public function handle($data, Closure $next){
        
        //... process data
        
        //return closure to pipeline
        return $next($data);
    }
}