承接 morrisonlevi/algorithm 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

morrisonlevi/algorithm

Composer 安装命令:

composer require morrisonlevi/algorithm

包简介

Composable algorithms in PHP

README 文档

README

Code Climate Test Coverage

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 (or make load.php): builds load.php
  • make phar: builds morrisonlevi_algorithm.phar
  • make 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

GitHub 信息

  • Stars: 46
  • Watchers: 4
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2015-04-29