gandung / pipeline
一个PHP包,用于调用并行闭包或可调用的类实例
v1.0.0
2017-10-10 23:41 UTC
Requires (Dev)
- phpunit/phpunit: ^5.7.16 || ^6.0.8
This package is auto-updated.
Last update: 2024-09-19 18:24:06 UTC
README
此库提供了并行运行回调/闭包/可调用实例的能力。
目录
快速开始
将几个任务串联起来,并立即并行执行。
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);
这将打印 'foo bar baz'
。这等于 $task3($task2($task1('foo')))
。
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);
这将打印与上面相同的结果。
先构建任务,然后运行。
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
流水线
__construct($tasks = [], ProcessorInterface $processor = null)
参数
$tasks
任务,可以是闭包/类实例的列表,默认为空数组\Gandung\Pipeline\ProcessorInterface $processor
实现了ProcessorInterface
的类实例,默认为null
返回值
无
pipe($task)
参数
$task
任务,可以是闭包/类实例
返回值
\Gandung\Pipeline\Pipeline
的不可变副本
invokeAll($param)
参数
$param
任务参数
返回值
混合型
流水线构建器
add($task)
参数
$task
任务,可以是闭包/类实例
返回值
Gandung\Pipeline\PipelineBuilder
的不可变副本
build(ProcessorInterface $processor = null)
参数
\Gandung\Pipeline\ProcessorInterface $processor
实现了ProcessorInterface
的类实例,默认为null
返回值
\Gandung\Pipeline\Pipeline
的实例
处理器
invoke($tasks, $param)
参数
$tasks
任务,可以是闭包/类实例的列表$param
任务参数
返回值
混合型
resume()
参数
无
返回值
无
freeze()
参数
无
返回值
无
interrupt()
参数
无
返回值
无
pause()
参数
无
返回值
无
getState()
参数
无
返回值
当前任务状态。
可中断处理器
__construct($routine)
参数
$routine
取消程序,必须返回true
或false
返回值
无
invoke($tasks, $param)
参数
$tasks
任务,可以是闭包/类实例的列表$param
任务参数
返回值
混合型
resume()
参数
无
返回值
无
freeze()
参数
无
返回值
无
interrupt()
参数
无
返回值
无
pause()
参数
无
返回值
无
getState()
参数
无
返回值
当前任务状态。
间歇处理器
__construct($routine = null)
参数
$routine
取消程序,必须返回true
或false
,默认为null
返回值
无
invoke($tasks, $param)
参数
$tasks
任务,可以是闭包/类实例的列表$param
任务参数
返回值
混合型
resume()
参数
无
返回值
无
pause()
参数
无
返回值
无
interrupt()
参数
无
返回值
无
freeze()
参数
无
返回值
无
getState()
参数
无
返回值
当前任务状态。