rikmeijer / functional-php
Functional primitives for PHP
Fund package maintenance!
lstrojny
Requires
- php: ^7.1|~8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.17
- phpunit/phpunit: ^7.0 || ^8.0 || ^9.5
- squizlabs/php_codesniffer: ~3.0
README
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, then 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
Installation
Run the following command in your project root:
composer require lstrojny/functional-php
Docs
Contributing
- Fork and
git clone
the project - Install dependencies via
composer install
- Run the tests via
composer run tests
- Write code and create a PR
Mailing lists
- General help and development list: http://groups.google.com/group/functional-php
- Commit list: http://groups.google.com/group/functional-php-commits
Thank you
- 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 - An Phan for many great contributions