gandung/pipeline

一个PHP包,用于调用并行闭包或可调用的类实例

v1.0.0 2017-10-10 23:41 UTC

This package is auto-updated.

Last update: 2024-09-19 18:24:06 UTC


README

Build status SensioLabsInsight

此库提供了并行运行回调/闭包/可调用实例的能力。

目录

快速开始

将几个任务串联起来,并立即并行执行。

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 取消程序,必须返回 truefalse

返回值

invoke($tasks, $param)

参数

  • $tasks 任务,可以是闭包/类实例的列表
  • $param 任务参数

返回值

混合型

resume()

参数

返回值

freeze()

参数

返回值

interrupt()

参数

返回值

pause()

参数

返回值

getState()

参数

返回值

当前任务状态。

间歇处理器

__construct($routine = null)

参数

  • $routine 取消程序,必须返回 truefalse,默认为 null

返回值

invoke($tasks, $param)

参数

  • $tasks 任务,可以是闭包/类实例的列表
  • $param 任务参数

返回值

混合型

resume()

参数

返回值

pause()

参数

返回值

interrupt()

参数

返回值

freeze()

参数

返回值

getState()

参数

返回值

当前任务状态。