jgimeno / value-objects
Collection of PHP value objects to use and extend as building blocks for DDD.
Installs: 330
Dependents: 0
Suggesters: 0
Security: 0
Stars: 7
Watchers: 0
Forks: 1
Open Issues: 3
pkg:composer/jgimeno/value-objects
Requires
- php: >=7.0
- ramsey/uuid: ^3.5
Requires (Dev)
- phpunit/phpunit: ^6.0
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2025-11-09 02:38:23 UTC
README
Ultimate PHP Value Object Collection
Collection of PHP value objects to use and extend as building blocks for DDD.
This library comes with the idea of having a starting point for defining value objects for different projects.
All the value objects are inmutable.
How to install
You can get it using composer:
composer require jgimeno/value-objects
How to use
Base objects
The idea of this library is to have a collection of objects as a base for the creation of your Domain.
The most basic object is the ValueObject which we can extend all
the value objects we want to create from.
Base ValueObject implements __toString() and equals() methods (i.e. you get them
for free).
If we know that our value objects will benefit from the methods included in the
objects Strings, Number or Boolean, we can extend from there.
Rationale
Imagine that I create an object called SonName that our domain needs.
In that case it could be useful to extend from Strings and we will
have methods like toUpperCase(), trim(), etc that we can reuse.
You get the idea.
Lastly there is another base object called Identifier. This is useful when
creating ids, for example, a UserId can extend from Identifier.
Then we can do UserId::generate() and we will have a unique
userId generated using UUIDs.
Useful objects
Internet\Email: Object representing an email address, it throws exceptions
when given email is not a valid email.
Internet\IpAddress: Object that represents an IP address, it throws exception
when is not a valid ip address.