Search by

chipslays / collection

chipslays

Laravel-compatible PHP collection with dot-notation and wildcard paths in every method. Zero dependencies.

Package info

github.com/chipslays/collection

pkg:composer/chipslays/collection

Statistics

Installs: 1 200

Dependents: 15

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2021-01-13 17:25 UTC

This package is auto-updated.

Last update: 2026-10-07 15:04:10 UTC


README

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.