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