abbasghasemi/collection

A collection of complete tools for working with PHP arrays.

1.6 2024-08-19 19:53 UTC

This package is auto-updated.

Last update: 2024-09-19 20:10:03 UTC


README

A PHP library for work with arrays

Powerful

  • Support List, Map, Set, Stack, Queue, Object ...
  • Functional (indexOf, map, where, reduce, first, firstOrNull firstWhere, ...)
  • Type generic documentation
  • Collections class for generate & filled List Collections::filled(int $length, mixed $element)
  • The ability to enforce maps and lists to accept a specific type

Installation

The preferred of installation is via Composer. Run the following command to install the package and add it as a requirement to your project's composer.json:

composer require abbasghasemi/collection

Array example

$list = Collections::filled(10, 'filled'); // ArrayList
echo count($list); // 10
echo Collections::toArraySet($list)->size(); // 1
$list->add(1); // This method does not exist!
echo $list->first(); // filled

$list = new MutableArrayList(/*[default]*/type: 'int');
$list->add(1); // added
$list->add(5); // added
echo count($list); // 2
echo $list->indexOf(1); // 0
echo $list->indexOf(6); // -1

$list = Collections::generate(10, function ($index){
    return $index;
}); // ArrayList
$list = $list->where(function ($element){
    return $element % 2 === 0;
});
echo $list->last(); // 8
echo $list; // [0,2,4,6,8]

Map example

$map = new MutableInsensitiveMap();
$map['InSensitive'] = 'Insensitive';
$map['INSENSITIVE'] = 'Insensitive';
echo $map['insensitive']; // Insensitive
echo $map->size(); // 1

$object = new MutableArrayList(); // or other object
$map2 = new MutableObjectMap(keyType: $object::class, valueType: $map::class);
$map2[$object] = $map;

echo intval($map2[$object] === $map); // 1

$map2->values()->first()['INSENSITIVE'] = 10;
echo $map['InSensitive']; // 10
$map2->keys()->first()->add('first');
$map2->keys()->first()->add('last');

echo $object->join(','); // first,last

Arrays class

Class methods

Maps class

Class methods

Collections class

See also easy-data-model

Creates a data model from array data.

Author & support

This library was created by Abbas Ghasemi.

You can report issues at the GitHub Issue Tracker.