ztsu/pipe

管道模式简单实现

1.0.0 2016-08-02 17:17 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:04:09 UTC


README

提供管道模式的简单实现。

需求

支持从版本 5.4 开始的 PHP。

安装

composer require ztsu/pipe

用法

以下是一个基本用法示例

use Ztsu\Pipe\Pipeline;

$a = function ($payload, $next) {
    return $next($payload . "a");
};

$b = function ($payload, $next) {
    return $next($payload . "b");
};

$pipeline = new Pipeline;

$pipeline->add($a);
$pipeline->add($b);

echo $pipeline->run(""); // "ab"

在这里,$a$b 是具有两个参数的可调用对象。第一个参数用于从先前阶段累积有效负载。第二个参数用于在管道中继续下一阶段。

要中断管道,只需返回 $payload 而不是调用 $next

$pipeline = new Pipeline;

$break = function ($payload, $next) {
    return $payload;
};

$pipeline->add($a);
$pipeline->add($break);
$pipeline->add($b);

echo $pipeline(""); // "a"

管道本身也是可调用的。它可以作为阶段使用。

为此,只需将其添加到另一个管道中

$pipeline = new Pipeline;

$pipeline->add($a);
$pipeline->add($bc);

echo $pipeline(""); // "abc"

如果将具有中断作为阶段的管道用作阶段,它将中断整个管道。

许可

MIT.