Skip to content

About

πŸ“ Laravel-style collections for any PHP project β€” with dot-notation paths in every method.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

Β 

History

1 Commit

Folders and files

Repository files navigation

Collection πŸ“

Laravel-style collections for any PHP project β€” with dot-notation paths in every method.

Latest version Tests PHP version Downloads License


Why Collection

  • Paths everywhere. get, set, where, sortBy, groupBy, sum, pluck and dozens of other methods accept paths like user.address.city, users.*.email, users[?active].email or **.email. Paths go through arrays, objects and nested collections β€” and stay close to hand-written loops in speed.
  • Reshape data in one call. rename() and remap() move fields into the structure you need; cast() converts types with built-in casters, enums, classes, callbacks or your own Caster.
  • The Laravel API you already know. Every method of Illuminate\Support\Collection, with the same names and behaviour β€” but no framework required. What is different πŸ€”
  • You stay in control. Methods that wrap PHP functions expose their options: SORT_* flags, JSON flags and depth, preserveKeys, a seeded Random\Randomizer, rounding modes.
  • No surprises. Transforming methods return a new collection; the few that change data in place are clearly listed. Strings are never called as functions by accident.
  • Zero dependencies. PHP 8.4+, one package, fully tested and statically analysed.

Installation

composer require collection/collection
use Collection\Collection;

$c = new Collection($array);
$c = Collection::make($arrayOrJsonOrIterable);
$c = collection($array); // global helper

Documentation

Section Description
Getting Started creating collections, conventions, exceptions, subclassing
Paths: Dot-Notation & Wildcards user.name, users.*.email, users.*[id], users[?age>18], **.email, objects, escaping dots
Reading, Writing & Converting get, set, has, forget, push, toJson…
Filtering & Finding where, filter, first, sole, contains, unique…
Transforming map, pluck, mapPath, flatten, toTree, reduce…
Reshaping: rename, remap & cast rename/move keys, build new structures, convert types
Sorting & Grouping sortBy, groupBy, keyBy, countBy, partition
Aggregates sum, avg, median, mode, percentage…
Slicing, Chunking & Randomness slice, chunk, paginate, sliding, random…
Combining Collections merge, diff, intersect, zip, crossJoin…
Pipelines, Macros & Debugging pipe, when, higher-order messages, macros, dump
Coming from Laravel what is the same and what is different

All methods at a glance πŸ‘‰


Contributing

composer test # Pest
composer analyse # PHPStan

Issues and pull requests are welcome!

License

MIT β€” see LICENSE.md.

About

πŸ“ Laravel-style collections for any PHP project β€” with dot-notation paths in every method.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages