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)