boehm_s/fun

PHP 函数式编程工具

1.3.0 2021-06-04 00:40 UTC

This package is auto-updated.

Last update: 2024-09-13 00:07:07 UTC


README

functional programming utilities for PHP ! Inspired by Ramda, Javascript, lodash and many other things !

为什么?

  • 因为 PHP 缺乏简单易用的函数式编程工具!
  • 为了证明我们仍然可以用 PHP 来享受编程乐趣(尽管它确实是 PHP)!!!

安装

composer require boehm_s/fun

如何使用它?

您可以查看 API 文档

或者,如果您熟悉 Ramda,您现在就可以开始编写代码。与 Ramda 一样,fun-php 方法是自动柯里化的

F::map($fn, $array)   ⇔   F::map($fn)($array)   ⇔   F::map()($fn)($array)

还实现了占位符。fun-php 的占位符是 F::_

F::map(F::_, $array)($fn)   ⇔   F::map($fn)(F::_)($array)   ⇔   F::map(F::_)($fn)($array)

示例

{
  "items": [{
      "id":1,
      "type":"train",
      "users":[
        { "id":1, "name":"Jimmy Page"},
        { "id":5, "name":"Roy Harper"}
      ]
    }, {
      "id":421,
      "type":"hotel",
      "users":[
        { "id":1, "name":"Jimmy Page" }, 
        { "id":2, "name":"Robert Plant" }
      ]
    }, {
      "id":876,
      "type":"flight",
      "users":[
        { "id":3, "name":"John Paul Jones" },
        { "id":4, "name":"John Bonham" }
      ]
    }]
}

获取所有用户名

$get_all_users_names = F::pipe(
    F::prop('items'),
    F::flatMap(F::prop('users')),
    F::map(F::prop('name')),
    F::uniq()
);

$travel = json_decode($travelJSON);

$travels_users = $get_all_users_names($travel);

var_dump($travels_users);  //  ["Jimmy Page", "Roy Harper", "Robert Plant", "John Paul Jones", "John Bonham"]

实现的方法

fun-php 只是一系列静态方法。要使用它们,只需在以下函数前加上 F::

对于列表/数组

对于对象/关联数组

对于函数组合

逻辑运算

备注(给自己)

部署文档

git subtree push --prefix doc/dist/html origin gh-pages