ztsu / pipe
管道模式简单实现
1.0.0
2016-08-02 17:17 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpspec/phpspec: ^2.5
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.