yuloh/pipeline

此包已被弃用,不再维护。未建议替代包。

简单的功能管道

v0.2.0 2016-04-18 01:20 UTC

This package is auto-updated.

Last update: 2022-02-01 12:57:20 UTC


README

Latest Version on Packagist Software License Build Status

简介

yuloh/pipeline是一个简单的功能管道。您可以将函数轻松链接起来以处理有效负载。它比传统方式更容易阅读,并且比传统方式有更少的临时变量。

目标

此包旨在公开尽可能简单的API。

编程语言Elixir有一个管道操作符(|>),它允许您轻松地链接函数

1 |> inc |> double

我很喜欢这种语法,并想编写一个管道包,这样我就不必反复编写pipeadd,因此有了这个包。

为什么仅限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)。有关更多信息,请参阅许可文件