morrisonlevi/algorithm
Composer 安装命令:
composer require morrisonlevi/algorithm
包简介
Composable algorithms in PHP
README 文档
README
PHP's built-in functions such as array_map, array_filter and array_reduce have a few issues:
- They only work with arrays
- They are eager instead of lazy
- They are cumbersome to compose
This repository provides definitions for common algorithms such as map, filter, and reduce with certain characteristics:
- They work with any type that can be used in a foreach loop
- They are lazy
- They are not (too) cumbersome to compose
Building
PHP does not have function autoloading at the time of this writing. Since this project is mostly functions it uses a makefile to build load.php which will include all of the functions for use. You can also build a phar or run the unit tests:
make(ormake load.php): buildsload.phpmake phar: buildsmorrisonlevi_algorithm.pharmake check: runs the phpunit test suite
There is a script registered in the composer.json that will build load.php if the composer autoloader gets built.
Examples
This example does a basic map. Note that the function that does the mapping comes first and the input data comes second:
<?php namespace morrisonlevi\Algorithm; require __DIR__ . '/load.php'; $mul2 = function ($value) { return $value * 2; }; $result = map($mul2)([1,2,3]); var_export(iterator_to_array($result)); /* array ( 0 => 2, 1 => 4, 2 => 6, ) */
This example chains a filter, map and sum together:
<?php namespace morrisonlevi\Algorithm; require __DIR__ . '/load.php'; $odd = function($value) { return $value % 2 > 0; }; $mul2 = function($value) { return $value * 2; }; $algorithm = chain( filter($odd), map($mul2), sum() ); var_dump($algorithm([1,2,3])); // int(8)
统计信息
- 总下载量: 8
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 46
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2015-04-29