lincolnbrito
7/26/2016 - 2:42 PM

How to use pipelines in Laravel

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);
    }
}