NOTE: functional-php used to come with a C extension that implemented most of the functions natively. As the performance differences weren’t that huge compared to the maintenance cost it has been removed.
A set of functional primitives for PHP, heavily inspired by Scala’s traversable collection, Dojo’s array functions and Underscore.js
- Works with arrays and everything implementing interface
Traversable
- Consistent interface: for functions taking collections and callbacks, first parameter is always the collection, than the callback.
Callbacks are always passed
$value
,$index
,$collection
. Strict comparison is the default but can be changed - Calls 5.3 closures as well as usual callbacks
- All functions reside in namespace
Functional
to not raise conflicts with any other extension or library
Put the require statement for functional-php
in your composer.json
file and run php composer.phar install
:
{
"require": {
"lstrojny/functional-php": "~1.2"
}
}
Checkout functional-php and include the _import.php
<?php
include 'path/to/functional-php/src/Functional/_import.php';
To run the test suite use vendor/bin/phpunit tests/
- General help and development list: http://groups.google.com/group/functional-php
- Commit list: http://groups.google.com/group/functional-php-commits
- Richard Quadling and Pierre Joye for Windows build help
- David Soria Parra for various ideas and the userland version of
Functional\flatten()
- Max Beutel for
Functional\unique()
,Functional\invoke_first()
,Functional\invoke_last()
and all the discussions - The people behind Travis CI for continuous integration