2017 © Pedro Peláez
 

library pipeline

A PHP package to invoke parallel closure or invokable class instance

image

gandung/pipeline

A PHP package to invoke parallel closure or invokable class instance

  • Wednesday, October 11, 2017
  • by gandung
  • Repository
  • 1 Watchers
  • 0 Stars
  • 8 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

Pipeline

Build status SensioLabsInsight, (*1)

This library provides ability to run callbacks/closure/invokable instance in parallel., (*2)

Table Of Content

Quick Start

Pipe several tasks and immediately run it in parallel.

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

  • $param Task 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)

The Versions

11/10 2017

dev-master

9999999-dev

A PHP package to invoke parallel closure or invokable class instance

  Sources   Download

BSD-3-Clause

The Development Requires

by Paulus Gandung Prakosa

11/10 2017

v1.0.0

1.0.0.0

A PHP package to invoke parallel closure or invokable class instance

  Sources   Download

BSD-3-Clause

The Development Requires

by Paulus Gandung Prakosa

11/10 2017

dev-add-license-1

dev-add-license-1

A PHP package to invoke parallel closure or invokable class instance

  Sources   Download

BSD-3-Clause

The Development Requires

by Paulus Gandung Prakosa