yuloh / pipeline
此包已被弃用,不再维护。未建议替代包。
简单的功能管道
v0.2.0
2016-04-18 01:20 UTC
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: 4.*
- squizlabs/php_codesniffer: ~2.3
This package is auto-updated.
Last update: 2022-02-01 12:57:20 UTC
README
简介
yuloh/pipeline是一个简单的功能管道。您可以将函数轻松链接起来以处理有效负载。它比传统方式更容易阅读,并且比传统方式有更少的临时变量。
目标
此包旨在公开尽可能简单的API。
编程语言Elixir有一个管道操作符(|>
),它允许您轻松地链接函数
1 |> inc |> double
我很喜欢这种语法,并想编写一个管道包,这样我就不必反复编写pipe
或add
,因此有了这个包。
为什么仅限PHP 7?
PHP 7引入了统一变量语法,这意味着我们可以这样做
pipe('hello world')('strrev')('strtoupper')();
而不是像这样
pipe('hello world')->pipe('strrev')->pipe('strtoupper')->process();
安装
通过Composer
$ composer require yuloh/pipeline
使用方法
要创建新的管道,使用您的有效负载调用Yuloh\Pipeline\pipe
函数。
use function Yuloh\Pipeline\Pipe; $pipe = pipe([1, 2]);
创建后,您可以通过调用管道来继续链接阶段。阶段必须是有效的PHP 调用。
$pipe('array_sum')('sqrt');
如果您没有阶段地调用管道,则管道将被处理,并将返回处理后的有效负载。
$result = $pipe();
整体来看,它看起来像这样
pipe([1, 2])('array_sum')('sqrt')();
传递参数
在添加阶段时,任何额外的参数都将在有效负载之后传递给阶段。例如,如果您正在处理JSON有效负载,则管道可能看起来像这样
use function Yuloh\Pipeline\Pipe; $pastTimes = pipe('{"name": "Matt", "pastTimes": ["playing Legend of Zelda", "programming"]}') ('json_decode', true) (function ($data) { return $data['pastTimes']; }) ('implode', ', ') (); echo $pastTimes; // playing Legend of Zelda, programming
在上一个示例中,json_decode
将作为json_decode($payload, true)
调用以返回一个数组。
替代方法调用使用
您还可以将阶段作为方法调用而不是函数参数添加。对于仅使用标准函数的管道,这更容易阅读。
pipe('hello world') ->strrev() ->strtoupper() ->get();
测试
$ composer test
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。