selvinortiz / collective
Simple collection implementation on top of native arrays
0.5.0
2016-06-16 05:01 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ^4.8
README
Description
Collective is a lightweight library that allows you to interact with native arrays in a more flexible and elegant way. It is inpired by Laravel Collections and focused on performance.
Requirements
- PHP 5.5+
- Composer and selvinortiz/collective
Install
composer require selvinortiz/collective
Test
sh spec.sh
Usage
// 1. Create a new instance of Collective // 2. Give it an (optional) input array // 3. Call methods on it $input = ['name' => 'Collective', 'release' => 'alpha']; (new Collective($input))->get('name'); // 'Collective'
Reference
get($key, $default = null)
$input = [ 'user' => [ 'name' => 'Brad', 'salary' => '100000' ] ]; (new Collective($input))->get('users.name'); // 'Brad'
set($key, $value)
(new Collection())->set('user.name', 'Matt')->toArray(); // ['user' => ['name' => 'Matt']]
count()
$input = [0, 1, 2, 3, 4, 5]; (new Collective($input))->count(); // 6
first(callable $callback = null, $default = null)
$input = [128, 256, 512, 'Brad', 'Brandon', 'Matt']; $collective = new Collective($input); $collective->first(); // 128 $collective->first(function($value) { return strpos($value, 'Bra') !== false; }); // Brad
last(callable $callback = null, $default = null)
$input = [128, 256, 512 'Brad', 'Brandon', 'Matt']; $collective = new Collective($input); $collective->last(); // 'Matt' $collective->last(function($value) { return strpos($value, 'Bra') !== false; }); // Brandon
map(callable $callback, array $default = [])
Applies your callable to each item in the collection
$input = [128, 256, 512 'Brad', 'Brandon', 'Matt']; (new Collective($input))->map(function($value) { return is_string($value) ? '- '.$value : $value; })->toArray(); // 128, 256, 512, '- Brad', '- Brandon', '- Matt'
filter(callable $callback = null, array $default = null)
Filters each item in the collection using your own callable
$input = [128, 256, 512 'Brad', 'Brandon', 'Matt']; (new Collective($input))->filter(function($value) { return is_numeric($value); })->toArray(); // 128, 256, 512
reduce(callable $callback, $initial = null)
Reduces a collection to a single value
$input = [ ['name' => 'Brad', 'salary' => 100000, 'type' => 'yearly'], ['name' => 'Brandon', 'salary' => 250000, 'type' => 'yearly'] ]; $callback = function ($value, $carry) { return $carry + $value['salary']; }; (new Collective($input))->reduce($callback); // 350000
reverse()
(new Collective([128, 256, 512]))->reverse()->toArray(); // [512, 256, 128]
flatten($depth = INF)
$input = [ 'level1' => [ 'name' => 'Level 1', 'level2' => [ 'name' => 'Level 2', 'level3' => [ 'name' => 'Level 3' ] ] ] ]; (new Collective($input))->flatten()->toArray(); // ['Level 1', 'Level 2', 'Level 3']
then(callable $callback)
Chains functions not defined by the collection without breaking the pipe
function filterToStrings($collective) { return $collective->filter(function ($value) { return is_string($value); }); } function fourCharsOnly($collective) { return $collective->filter(function ($value) { return strlen($value) == 4; }); } $collective->then('filterToStrings')->then('filterToLength')->toArray(); // 'Brad', 'Matt'
License
Collective is open source software licensed under the MIT License