boehm_s / fun
PHP 函数式编程工具
1.3.0
2021-06-04 00:40 UTC
Requires
- php: >=7.2
Requires (Dev)
- phpunit/phpunit: ^8
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