PHPackages                             mezon/functional - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. mezon/functional

ActiveLibrary[Framework](/categories/framework)

mezon/functional
================

Small and fast framework for functional programming

1.1.1(2mo ago)313.0k[1 PRs](https://github.com/alexdodonov/mezon-functional/pulls)10MITPHPPHP &gt;=8.2.0

Since Feb 13Pushed 2mo ago2 watchersCompare

[ Source](https://github.com/alexdodonov/mezon-functional)[ Packagist](https://packagist.org/packages/mezon/functional)[ Docs](https://github.com/alexdodonov/mezon-functional)[ RSS](/packages/mezon-functional/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (7)Versions (16)Used By (10)

Functional programming
======================

[](#functional-programming)

[![Build Status](https://camo.githubusercontent.com/283cfb6da02df1fe968ef8ff1ec31dcf0551576c282c6dc5c353bd1bfcdbb448/68747470733a2f2f7472617669732d63692e636f6d2f616c6578646f646f6e6f762f6d657a6f6e2d66756e6374696f6e616c2e7376673f6272616e63683d6d6173746572)](https://travis-ci.com/alexdodonov/mezon-functional) [![codecov](https://camo.githubusercontent.com/b1e0c8ee4f3b2e628749cfbd53c057dc8291ff56a3bd83079d2640439455c6ec/68747470733a2f2f636f6465636f762e696f2f67682f616c6578646f646f6e6f762f6d657a6f6e2d66756e6374696f6e616c2f6272616e63682f6d61737465722f67726170682f62616467652e737667)](https://codecov.io/gh/alexdodonov/mezon-functional)

Intro
-----

[](#intro)

This class provides various members and tools for functional programming. It will help you to work with arrays in a very simple way.

Modes
-----

[](#modes)

Here we can fetch specified field from all objects of array:

```
$obj1 = new stdClass();
$obj1->foo = 1;

$obj2 = new stdClass();
$obj2->foo = 2;

$obj3 = new stdClass();
$obj3->foo = 3;

$Data = array( $obj1 , $obj2 , $obj3 );

// will display array( 1 , 2 ,3 )
var_dump( \Mezon\Functional\Fetcher::getFields( $Data , 'foo' ) );
```

We can also set fields with multyple values:

```
$Values = array( 1 , 2 , 3 );
$obj1 = new stdClass();
$obj2 = new stdClass();

$Data = array( $obj1 , $obj2 );

Functional::setFieldsInObjects( $Data , 'foo' , $Values );
// will display 3 objects
var_dump( $Data );
```

And fianlly we can sum specified fields:

```
$obj1 = new stdClass();
$obj1->foo = 1;

$obj2 = new stdClass();
$obj2->foo = 2;

$obj3 = new stdClass();
$obj3->foo = 3;

$Data = array( $obj1 , $obj2 , $obj3 );

// will display value 6
var_dump( Functional::sumFields( $Data , 'foo' ) );
```

Note that you can recursively walk along the nested arrays:

```
$obj1 = new stdClass();
$obj1->foo = 1;

$obj2 = new stdClass();
$obj2->foo = 2;

$obj3 = new stdClass();
$obj3->foo = 3;

$Data = array( $obj1 , array( $obj2 , $obj3 ) );

// will display value 6
var_dump(Functional::sumFields( $Data , 'foo' ));
```

And this code will also work:

```
// will display value 3
var_dump(Functional::sumFields( [
    ['foo'=>1],
    ['foo'=>2]
] , 'foo' ));
```

Transformations
---------------

[](#transformations)

We can also transform objects in arrays like this (the most basic and simple way):

```
/**
*   Transformation function multiplies 'foo' field.
*/
function  transform2x( $Object )
{
    $Object->foo *= 2;

    return( $Object );
}
$obj1 = new stdClass();
$obj1->foo = 1;

$obj2 = new stdClass();
$obj2->foo = 2;

$obj3 = new stdClass();
$obj3->foo = 3;

$Data = array( $obj1 , $obj2 , $obj3 );

Functional::transform( $Data , 'transform2x' );
// will display 3 objects
// with 2, 4 and 6 values in their 'foo' fields
var_dump( $Data );
```

But if you need more complex transformations, you can use class Transform. It will allow you to build entirely new array.

```
$data = [
	1 , 2
];

Transform::convert($data,function($item){return [10*$item, 100*$item];});

var_dump($data);

// will output
// [10=>100 , 20=>200]
```

And if you want to transform only elements of the array, then use Transform::convertElements

```
$data = [
	1 , 2
];

Transform::convertElements($data,function($item){return 10 * $item;});

var_dump($data);

// will output
// [0=>10 , 1=>20]
```

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance86

Actively maintained with recent releases

Popularity25

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~170 days

Recently: every ~427 days

Total

14

Last Release

73d ago

PHP version history (2 changes)1.0.0PHP &gt;=7.2.0

1.1.1PHP &gt;=8.2.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/14943896?v=4)[alexdodonov](/maintainers/alexdodonov)[@alexdodonov](https://github.com/alexdodonov)

---

Top Contributors

[![alexdodonov](https://avatars.githubusercontent.com/u/14943896?v=4)](https://github.com/alexdodonov "alexdodonov (28 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPsalm

Type Coverage Yes

### Embed Badge

![Health badge](/badges/mezon-functional/health.svg)

```
[![Health](https://phpackages.com/badges/mezon-functional/health.svg)](https://phpackages.com/packages/mezon-functional)
```

###  Alternatives

[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.4k85.0M532](/packages/laravel-passport)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

712181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)[laravel/pail

Easily delve into your Laravel application's log files directly from the command line.

91545.3M590](/packages/laravel-pail)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
