Skip to content
forked from wernerdweight/RA

PHP Array object with consistent and predictable API

License

Notifications You must be signed in to change notification settings

alim-shapiev/RA

 
 

Repository files navigation

RA

PHP Array object with consistent, predictable and convenient API

Build Status Latest Stable Version Total Downloads License

Instalation

  1. Download using composer
composer require wernerdweight/ra
  1. Use in your project
use WernerDweight\RA\RA;
 
// helper methods (extracted here to simplify the code below and emphasize the difference)

function filterFunction(string $god): bool {
    return false !== strpos($god, 's');
}
 
function mapFunction(string $godContainingTheLetterS): string {
    return strtoupper($godContainingTheLetterS);
}
 
function reduceFunction(string $carry, string $god): string {
    return $carry .= ($carry[-1] === ' ' ? '' : ', ') . $god;
}
 
// create new RA
$egyptianGods = new RA(['Ra', 'Osiris', 'Anubis', 'Horus']);
 
// use as object
$godsContainingTheLetterSInUppercase = $egyptianGods
    ->filter('filterFunction')
    ->map('mapFunction')
    ->reverse()
    ->reduce('reduceFunction', 'My favourite Egyptian Gods are ');
 
echo $godsContainingTheLetterSInUppercase . "\n";
 
// use as normal array
$godsContainingTheLetterSInUppercase = array_reduce(
    array_reverse(
        array_map(
            'mapFunction',
            array_filter(
                $egyptianGods->toArray(),
                'filterFunction'
            )
        )
    ),
    'reduceFunction',
    'My favourite Egyptian Gods are '
);
 
echo $godsContainingTheLetterSInUppercase . "\n";
 
// RA extends Iterator, ArrayAccess and Countable
foreach ($egyptianGods as $god) {
    echo sprintf("My favourite Egyptian God is %s\n", $god);
}

API

TODO:

About

PHP Array object with consistent and predictable API

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%