2017 © Pedro Peláez
 

project php-chain

image

formigone/php-chain

  • Friday, March 10, 2017
  • by formigone
  • Repository
  • 0 Watchers
  • 9 Stars
  • 5,795 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 8 Versions
  • 17 % Grown

The README.md

php-chain

A thin abstraction over PHP arrays to help you easily chain array transformation functions., (*1)

What problems does this library solve?

The goal of this simple library is to help you work with arrays in PHP, particularly when using multiple of the transformation functions for arrays., (*2)

Examples:

Suppose you have an array of arrays such as the following:, (*3)

    $users = array(
        array(
            'id' => 4,
            'username' => 'jshep',
            'firstName' => 'Jack',
            'lastName' => 'Shepherd',
            'active' => true
         ),
        array(
            'id' => 8,
            'username' => 'jlock',
            'firstName' => 'John',
            'lastName' => 'Lock',
            'active' => false
         ),
        // ...
        array(
            'id' => 23,
            'username' => 'jj-jacob',
            'firstName' => 'Jacob',
            'lastName' => null,
            'active' => false
        ),
        array(
            'id' => 42,
            'username' => 'smokey',
            'firstName' => 'Esau',
            'lastName' => 'Iratus',
            'active' => true
        ),
    );

With that on hand, you may want to map over that array, then filter it, and possibly diff those objects against an identical or similar collection representing the same data models., (*4)

    $activeUsers = array_filter($users, function($user) {
          return $user['active'];
    });

    $activeUsernames = array_map(function($user) {
          return $user['username'];
    }, $activeUsers);

One problem you've noticed if you've ever had to use some of PHP's array functions is that the order of the arguments is not consistent. Does the predicate function go before or after the array?, (*5)

The other problem php-chain aims to solve is to using these functions more terse, and without dropping those intermediary collections along the way., (*6)

    $activeUsernames = Formigone\Chain::from($users)
         ->filter(function($user){ return $user['active']; })
         ->map(function($user){ return $user['username']; })
         ->get();

Supported functionality

  • map($predicateFunction) - projects the current array into the output of the predicate function
  • filter($predicateFunction) - filters the current array with the predicate function
  • reduce($predicateFunction, $optInitialValue) - reduces the current array into a value generated by the predicate function
  • intersect($predicateFunction, $otherArray) - iterates the current array with each element from the other array, keeping values found in both arrays (whenever the predicate function returns true)
  • diff($predicateFunction, $otherArray) - iterates the current array with each element from the other array, keeping values unique to the current array (whenever the predicate function returns false)
  • flip() - returns the current array flipping keys and values (not destroying the current array)
  • get() - returns a copy of the current array

The Versions

10/03 2017

dev-master

9999999-dev

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Rodrigo Silveira

10/03 2017

v0.1.1

0.1.1.0

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Rodrigo Silveira

10/03 2017

v0.1.0

0.1.0.0

  Sources   Download

MIT

The Requires

  • php >=5.3.3

 

The Development Requires

by Rodrigo Silveira

27/01 2017
28/03 2016

v0.0.4

0.0.4.0

  Sources   Download

MIT

by Rodrigo Silveira

23/03 2016

v0.0.3

0.0.3.0

  Sources   Download

MIT

by Rodrigo Silveira

03/02 2016

v0.0.2

0.0.2.0

  Sources   Download

MIT

by Rodrigo Silveira

03/02 2016

v0.0.1

0.0.1.0

  Sources   Download

MIT

by Rodrigo Silveira