tightenco/
collect
g4t.io

Use Collections outside Laravel

by Eric L. Barnes

Tighten has created a Collections only split from Laravel’s Illuminate Support package. This is designed for stand-alone PHP packages that would still lik…

README from tightenco/collect Open on GitHub →

Tighten Collect Logo Banner

Collect - Illuminate Collections

Latest Version on Packagist Total Downloads Build Status

Deprecated: With the separation of Illuminate's Collections package, Collect is no longer necessary :tada: . We will maintain it for the 8.0 and 9.0 releases of Laravel for the convenience of package maintainers, and will stop mirroring new major versions after 9.0, but keep the existing package here for continued support.

Import Laravel's Collections into non-Laravel packages easily, without needing to require the entire Illuminate\Support package. (Why not pull Illuminate\Support in framework-agnostic packages)

Written by Taylor Otwell as a part of Laravel's Illuminate/Support package, Collect is just the code from Support needed in order to use Collections on their own.

Lovingly split by Matt Stauffer for Tighten Co., with a kick in the butt to finally do it from @assertchris.

Installation

With Composer:

composer require tightenco/collect

Development

If you are a developer working on Collect and you're tasked with upgrading it to mirror a new version of Laravel, run ./upgrade.sh from the root directory. You can pass a parameter to target a specific Laravel version (e.g. ./upgrade.sh 5.7.10) or, if you don't pass a parameter, the script will find the latest tagged release and run against that.

The upgrader will pull down the appropriate source and test files for the specified version of Laravel and then run the tests.

./upgrade.sh
# or
./upgrade.sh 5.7.10

The upgrade script requires the use of wget. It's recommended to install homebrew, and run brew install wget

Testing

Due to a dependency on Carbon, tests won't pass until you've run ./upgrade.sh at least once locally.

vendor/bin/phpunit

FAQ

  • Has this ever, or will it ever, develop independently from Illuminate's Collections? No. Using an upgrade script, it's split automatically with every Laravel release to keep it in sync with Laravel's Collections, even mirroring the release numbers.
  • Why is the package tightenco/collect instead of illuminate/collect? It's not an official Laravel package so we don't want to use the Packagist namespace reserved by Laravel packages. One day Collection may be extracted from illuminate/support to a new package. If so, we'll deprecate this package and point to the core version. Now that illuminate/collections has been released, we're deprecating this package.
  • Why not just use an array? What a great question. Tighten alum Adam Wathan has a book about that.

License

The Laravel framework is open-sourced software licensed under the MIT license. Collect consists almost entirely of Laravel source code, so maintains the same license.

More from the ecosystem

marcreichel/
laya-php
g4t.io
3 53

LayaPHP: Self-Hosted Text Classification for PHP and Laravel

Classify text in PHP without an LLM bill: typed decisions in 100+ languages, self-hosted. Laravel-ready SDK for Laya, a Jev AI alternative.

ai classification decision-engine
marcreichel/laya-php via Laravel News
Josh-Dovey/
postcodes-laravel
g4t.io
5 9

Postcodes for Laravel: GB Postcode Lookup and Geography Data

Postcodes for Laravel adds typed GB postcode lookups, validation, geography data, distance searches, and test fakes through the GB Postcodes API.

Josh-Dovey/postcodes-laravel via Laravel News
RedberryProducts/
mailbox-for-laravel
g4t.io
4 115

Mailbox for Laravel: Preview and Test Rendered Email

Mailbox for Laravel captures outgoing mail in a local dashboard and lets you test rendered HTML, recipients, and attachments with fluent assertions.

RedberryProducts/mailbox-for-laravel via Laravel News