This package is abandoned
Honestly - just use PHPStan at this point., (*1)
, (*2)
, (*3)
Typed Collections
While PHP 7 brings nice features for using types as intended,
there are many things still missing. One thing I really miss
is the use of generics, or simply the ability to type hint
an array of elements with specific types. The aim of this
package is to provide an alternative way to type-hinted
arrays., (*4)
How to use?
This package is build upon Laravel's Collection and requires
illuminate/support. Therefore, while not strictly tied to
Laravel, it's intended to be used with the Laravel 5
framework., (*5)
It works by creating collection classes for each type and
specifying the types of the elements. This will be enforced,
and you can be sure the collection only contains elements
with the specified type., (*6)
Installation
Use composer to install the package., (*7)
composer require nxu/typed-collection
Not using composer? Too bad., (*8)
Built-in collections
The package provides built in collections for all scalar
types of PHP (other than null of course):, (*9)
ArrayCollection
BooleanCollection
CallableCollection
FloatCollection
IntegerCollection
ResourceCollection
StringCollection
Also, there is a DateTimeInterfaceCollection to be used., (*10)
Custom collection classes
For any other type, create a class and extend TypedCollection.
Then simply set the protected $objectType property to the FQN
of the type you wish to use:, (*11)
protected $objectType = \DateTime::class;
That's all, adding any other types will throw an InvalidTypeException., (*12)
Even more customization
If you wish to customize the collection even more, you can override
the isTypeValid($value): bool method and add any validation rule., (*13)
Helpers
Similarly to Laravel's collect() method, this package provides
easy to use helper methods:, (*14)
collect_array()
collect_bool()
- ...
License
This package is open source software licensed under the MIT License., (*15)