Download the PHP package boehm_s/fun without Composer
On this page you can find all versions of the php package boehm_s/fun. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package fun
fun-php
functional programming utilities for PHP ! Inspired by Ramda, Javascript, lodash and many other things !
Why ?
- Because PHP lacks of simple and easy-to-use utilities for functional programming !
- To prove that we can still have fun with PHP (despite the fact that it's PHP) !!!
Installation
How to use it ?
You can review the API Documentation
Or, if you're familiar with Ramda, you can start writing code right now. As with Ramda, fun-php methods are automatically curried :
F::map($fn, $array)
⇔ F::map($fn)($array)
⇔ F::map()($fn)($array)
Also placeholders are implemented. fun-php placeholder is F::_
:
F::map(F::_, $array)($fn)
⇔ F::map($fn)(F::_)($array)
⇔ F::map(F::_)($fn)($array)
Example
Get all users names
Implemented methods
fun-php is just a bunch of static methods. To use them, juste prefix the following functions with F::
For Lists / Arrays
function | type | function | type |
---|---|---|---|
map | ((a, i, [a]) → b) → [a] → [b] |
flatMap | ((a, i, [a]) → [b]) → [a] → [b] |
filter | ((a, i, [a]) → Bool) → [a] → [a] |
reduce | ((a, b) → a) → a → [b] → a |
each | (a → _) → [a] → [a] |
||
find | ((a, i, [a]) → Bool) → [a] → a |
findIndex | ((a, i, [a]) → Bool) → [a] → i |
some | ((a, i, [a]) → Bool) → [a] → Bool |
every | ((a, i, [a]) → Bool) → [a] → Bool |
sort | ((a, a) → Bool) → [a] → [a] |
reverse | [a] → [a] |
includes | a → [a] → Bool |
uniq | [a] → [a] |
splitAt | Number → [a] → [[a], [a]] |
uniqBy | (a → b) → [a] → [a] |
For Objects / Associative arrays
function | type | function | type |
---|---|---|---|
prop | k → {k: v} → v \| null |
pick | [k] → {k: v} → {k: v} \| null |
props | [k] → {k: v} → [v] |
||
propEq | k → v → {k: v} → Bool |
propSatisfies | (v → Bool) → k → {k: v} → Bool |
propOr | k → d → {k: v} → v \| d |
merge | {k: v} → ({k: v}, ..., {k: v}) → {k: v} |
For function composition
function | type |
---|---|
compose | ((y → z), (x → y), ... ,(a → b)) → (a → z) |
pipe | ((a → b), (b → c), ... , (y → z)) → (a → z) |
partial | ((a, b, ..., n) → x) → [a, b, ...] → ((d, e, ..., n) → x) |
Logical operations
function | type |
---|---|
not | * → Bool |
Notes (to myself)
Deploying the doc :