Pipeline
, (*1)
This library provides ability to run callbacks/closure/invokable instance in parallel., (*2)
Table Of Content
Quick Start
use Gandung\Pipeline\Pipeline;
// Closure based task.
$pipe = (new Pipeline)
->pipe(function($q) { return $q; })
->pipe(function($q) { return join(' ', [$q, 'bar']); })
->pipe(function($q) { return join(' ', [$q, 'baz']); });
$payload = $pipe->invokeAll('foo');
echo sprintf("%s\n", $payload);
This will print 'foo bar baz'
. This equals to $task3($task2($task1('foo')))
., (*3)
use Gandung\Pipeline\Pipeline;
use Gandung\Pipeline\Tests\Fixtures\FooTask;
use Gandung\Pipeline\Tests\Fixtures\BarTask;
use Gandung\Pipeline\Tests\Fixtures\BazTask;
// Instance based task. Class instance must implements __invoke and TaskInterface class interface.
$pipe = (new Pipeline)
->pipe(new FooTask)
->pipe(new BarTask)
->pipe(new BazTask);
$payload = $pipe->invokeAll('foo');
echo sprintf("%s\n", $payload);
This will print the same result as above., (*4)
Build tasks first, then run.
use Gandung\Pipeline\PipelineBuilder;
// Closure based task.
$builder = (new PipelineBuilder)
->add(function($q) { return $q; })
->add(function($q) { return join(' ', [$q, 'bar']); })
->add(function($q) { return join(' ', [$q, 'baz']); });
$pipe = $builder->build();
$payload = $pipe->invokeAll('foo');
echo sprintf("%s\n", $payload);
use Gandung\Pipeline\PipelineBuilder;
use Gandung\Pipeline\Tests\Fixtures\FooTask;
use Gandung\Pipeline\Tests\Fixtures\BarTask;
use Gandung\Pipeline\Tests\Fixtures\BazTask;
// Instance based task. Class instance must implements __invoke and TaskInterface class interface.
$builder = (new PipelineBuilder)
->add(new FooTask)
->add(new BarTask)
->add(new BazTask);
$pipe = $builder->build();
$payload = $pipe->invokeAll('foo');
echo sprintf("%s\n", $payload);
API
Pipeline
__construct($tasks = [], ProcessorInterface $processor = null)
, (*5)
Parameter
-
$tasks
The tasks, can be list of closure/class instance, defaulting to empty array
-
\Gandung\Pipeline\ProcessorInterface $processor
The class instance which implements ProcessorInterface
, defaulting to null
Return Value
None, (*6)
pipe($task)
, (*7)
Parameter
-
$task
The task, can be closure/class instance
Return Value
An immutable copy of \Gandung\Pipeline\Pipeline
, (*8)
invokeAll($param)
, (*9)
Parameter
Return Value
Mixed, (*10)
PipelineBuilder
add($task)
, (*11)
Parameter
-
$task
The task, can be closure/class instance
Return Value
An immutable copy of Gandung\Pipeline\PipelineBuilder
, (*12)
build(ProcessorInterface $processor = null)
, (*13)
Parameter
-
\Gandung\Pipeline\ProcessorInterface $processor
The class instance which implements ProcessorInterface
, defaulting to null
Return Value
An instance of \Gandung\Pipeline\Pipeline
, (*14)
Processor
invoke($tasks, $param)
, (*15)
Parameter
-
$tasks
The tasks, can be list of closure/class instance
-
$param
Task parameter
Return Value
Mixed, (*16)
resume()
, (*17)
Parameter
None, (*18)
Return Value
None, (*19)
freeze()
, (*20)
Parameter
None, (*21)
Return Value
None, (*22)
interrupt()
, (*23)
Parameter
None, (*24)
Return Value
None, (*25)
pause()
, (*26)
Parameter
None, (*27)
Return Value
None, (*28)
getState()
, (*29)
Parameter
None, (*30)
Return Value
Current task state., (*31)
InterruptibleProcessor
__construct($routine)
, (*32)
Parameter
-
$routine
Cancellation routine, must return true
or false
Return Value
None, (*33)
invoke($tasks, $param)
, (*34)
Parameter
-
$tasks
The tasks, can be list of closure/class instance
-
$param
Task parameter
Return Value
Mixed, (*35)
resume()
, (*36)
Parameter
None, (*37)
Return Value
None, (*38)
freeze()
, (*39)
Parameter
None, (*40)
Return Value
None, (*41)
interrupt()
, (*42)
Parameter
None, (*43)
Return Value
None, (*44)
pause()
, (*45)
Parameter
None, (*46)
Return Value
None, (*47)
getState()
, (*48)
Parameter
None, (*49)
Return Value
Current task state., (*50)
IntermitProcessor
__construct($routine = null)
, (*51)
Parameter
-
$routine
Cancellation routine, must return true
or false
, defaulting to null
Return Value
None, (*52)
invoke($tasks, $param)
, (*53)
Parameter
-
$tasks
The tasks, can be list of closure/class instance
-
$param
Task parameter
Return Value
Mixed, (*54)
resume()
, (*55)
Parameter
None, (*56)
Return Value
None, (*57)
pause()
, (*58)
Parameter
None, (*59)
Return Value
None, (*60)
interrupt()
, (*61)
Parameter
None, (*62)
Return Value
None, (*63)
freeze()
, (*64)
Parameter
None, (*65)
Return Value
None, (*66)
getState()
, (*67)
Parameter
None, (*68)
Return Value
Current task state., (*69)