webparking/laravel-type-safe-collection

This package provides type-safe extension of the laravel collection, forcing a single type of object.

1.1.0 2020-09-10 10:21 UTC

This package is auto-updated.

Last update: 2024-04-10 18:15:09 UTC


README

Build Status Quality score Code coverage

PHP is getting more mature and allows us to program strong typed in new ways with each new version, however we still lack the option to have generic lists/arrays. This package aims to provide such a thing in the meantime.

The TypeSafeCollection provided by this package will make sure that any object within it is the object you expect.

Installation

Add this package to composer.

composer require webparking/laravel-type-safe-collection

Usage

/**
 * @method \ArrayIterator|User[] getIterator()
 * @method User|null             first()
 */
class UserCollection extends TypeSafeCollection
{
    protected $type = User::class;
}
class User extends Model
{
    public function newCollection(array $models = []): UserCollection
    {
        return new UserCollection($models);
    }
}

All queries on User that would result in a Collection will now result in a UserCollection.

get_class(User::all()) // UserCollection
get_class(User::where('type', '=', 'admin')->get()) // UserCollection
get_class(User::where('id', '=', 1)->first()) // User

Licence and Postcardware

This software is open source and licensed under the MIT license.

If you use this software in your daily development we would appreciate to receive a postcard of your hometown.

Please send it to: Webparking BV, Cypresbaan 31a, 2908 LT Capelle aan den IJssel, The Netherlands