Download the PHP package antennaio/laravel-vo without Composer
On this page you can find all versions of the php package antennaio/laravel-vo. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download antennaio/laravel-vo
More information about antennaio/laravel-vo
Files in antennaio/laravel-vo
Package laravel-vo
Short Description Making the most of value objects in Laravel
License MIT
Homepage https://github.com/antennaio/laravel-vo
Informations about the package laravel-vo
Laravel VO
Making the most of value objects in Laravel
A simple ValueObject abstract class and ValueObjectCollection class that will help you make the most of value objects in Laravel.
Installation
Install through composer:
Usage - ValueObject
Here is a simple example of a Domain value object:
Now whenever the domain
attribute is set you are expected to pass a Domain object:
In a truly DRY fashion a value object can be used to perform validation in your requests:
Using the custom validator to validate the domain
field:
Usage - ValueObjectCollection
Sometimes it's useful to collect and store multiple value objects together. This is when ValueObjectCollection comes into play. Creating an immutable ValueObjectCollection is as simple as telling it which value objects will be stored as part of the collection.
In the example below DomainCollection will ONLY accept valid domain names or throw an
InvalidArgumentException
.
Usually a collection is created out of user input, that's why you can also pass a string that will get parsed when a new collection is created:
The delimiter (a comma by default) can be adjusted by setting delimiter
property in DomainCollection.
Dislaying the domain collection in the view:
Finally, just like in case of ValueObject, ValueObjectCollection can be used to create a custom validator:
Validating a collection of domains:
Other examples
For another example of HexColor and HexColorCollection check out the tests/* directory.