PHP Array object with consistent and predictable API
Installs: 7 386
Dependents: 8
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 2
Open Issues: 3
Requires
- php: >=8.1
- thecodingmachine/safe: ^2.4
Requires (Dev)
README
PHP Array object with consistent, predictable and convenient API
Instalation
- Download using composer
composer require wernerdweight/ra
- 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: