crocodile2u/chainy

该包的最新版本(v1.0)没有可用的许可证信息。

v1.0 2018-12-09 07:51 UTC

This package is auto-updated.

Last update: 2024-09-10 20:41:36 UTC


README

你有没有写过这样的代码?

$array = array_filter($array);
$array = array_map(
    $array,
    function($element) {
        // ... manipulations ...
        return $modifiedElement;
    }
);
sort($array);

你知道吗?你可以用更易读、更美观的方式做同样的事情

$chain = (new \chainy\Chain)

    ->filter()

    ->map(
        function($element) {
            // ... manipulations ...
            return $modifiedElement;
        }
    )

    ->sort();

$array = $chain->apply($array);

Chainy 是一个函数管道,其中每个后续函数都从上一个函数的输出中获取输入。在上面的例子中,当在 $array 上调用 $chain->apply() 时,它将依次通过 filter()map()sort()。正如你所期望的,这些方法只是 PHP 内置函数 array_filterarray_mapsort 的包装。

这就是 Chainy 的使用方式

  1. 创建新的 Chain 实例。
  2. 设置管道,向链中添加元素(在这个例子中,filter 用于去除空元素,map 用于对每个过滤后存活下来的元素应用一些修改,然后对结果数组进行排序)。
  3. 在输入数组上调用 Chain->apply()。结果是经过过滤、修改和排序的数组。
$chain = (new \chainy\Chain)

+------> filter() --+
|                   |
|    +--------------+
|    |
|    +-> map(function()...) --+
|                             |
|    +------------------------+
|    |
|    +-> sort();
|
| $array = $chain->apply($array);
|                          |
|--------------------------+