timatanga / pipeline
timatanga Pipeline 包
v0.1.0
2021-09-26 11:57 UTC
Requires (Dev)
- phpunit/phpunit: 10.0.x-dev
- symfony/var-dumper: 6.0.x-dev
This package is auto-updated.
Last update: 2024-09-26 18:32:27 UTC
README
管道由一系列按顺序排列的处理元素组成,每个元素的输出是下一个元素的输入。Pipeline 包提供了一种易于使用、流畅的接口,通过一系列管道(可调用对象)来处理对象(可以是任何类型)。
安装
composer require timatanga/pipeline
使用
创建管道实例的最基本选项不需要任何参数;
use timatanga\Pipeline\Pipeline;
$pipeline = new Pipeline;
拥有管道类的实例后,可以流畅地添加更多步骤
$result = $pipeline->send($object)->through($pipes)->process();
对象可以是任何类型。请注意,管道链必须能够处理对象类型,否则将抛出 RuntimeException。通过方法的参数接受一个可调用对象的数组。如果对象实现了魔法调用方法,并且该方法在当前作用域中可见,则对象始终是可调用的。如果类实现了 callStatic 方法,则类名称是可调用的。另一方面,函数始终被处理为可调用的。
示例
通过管道修剪和替换字符串
use timatanga\Pipeline\Pipeline;
$object = ' Foo bar ';
$fn_a = function($arg) { return trim($arg); };
$fn_b = function($arg) { return str_replace('Foo', 'foo', $arg); };
$fn_c = function($arg) { return str_replace('bar', 'foo', $arg); };
$result = (new Pipeline())->send($object)->through([$fn_a, $fn_b, $fn_c])->process();
// results in 'foo foo'