1. Go to this page and download the library: Download thisbar/valueobjects library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
thisbar / valueobjects example snippets
final class UserEmail implements ValueObject {
...
final class UserEmail implements ValueObject {
use StringTrait;
...
...
public function __construct(string $string)
{
Assert::that($string)->email();
$this->string = $string;
}
...
final class Fastening implements ValueObject
{
use EnumTrait;
public const BUTTON = 0;
public const CLIP = 1;
public const PIN = 2;
public const ZIP = 3;
}
$fastening = Fastening::fromNative('BUTTON');
$fastening->toNative(); // Equals to string: 'BUTTON'
final class Location implements ValueObject
{
use CompositeTrait;
private $latitude;
private $longitude;
public function __construct(Latitude $latitude, Longitude $longitude)
{
$this->latitude = $latitude;
$this->longitude = $longitude;
}
public function getLatitude(): Latitude
{
return $this->latitude;
}
public function getLongitude(): Longitude
{
return $this->longitude;
}
...
...
public static function fromNative($native)
{
return new static(
Latitude::fromNative($native['latitude']),
Longitude::fromNative($native['longitude'])
);
}
...
interface PhoneNumber extends ValueObject
{
}
final class NonNullPhoneNumber implements PhoneNumber
{
use StringTrait;
}
final class NullPhoneNumber implements PhoneNumber
{
use NullTrait;
}
final class NullablePhoneNumber extends Nullable implements PhoneNumber
{
protected static function nonNullImplementation(): string
{
return NonNullPhoneNumber::class;
}
protected static function nullImplementation(): string
{
return NullPhoneNumber::class;
}
}
interface Set extends ValueObject, \IteratorAggregate, \ArrayAccess, \Countable
{
public function add($set);
public function remove($set);
public function contains(ValueObject $value): bool;
public function toArray(): array;
}
final class SetOfLocations extends NonNullSet implements Set
{
protected function typeToEnforce(): string
{
return Location::class;
}
public static function valuesShouldBeUnique(): bool
{
return true;
}
}
// Iteration
$set = new SetOfLocations([$one, $two]);
foreach($set as $value) {
// TODO: Do something with each value object
}
// Access
$one = $set[0];
$two = $set[1];
//Counting
$count = count($set); // Returns 2
$set = new SetOfLocations([$one, $two]);
$anotherSet = new SetOfLocations([$three]);
$mergedSet = $set->add($anotherSet);
count($mergedSet) // Equals: 3
$set = new SetOfLocations([$one, $two, $three]);
$anotherSet = new SetOfLocations([$one]);
$remove = $set->remove($anotherSet);
count($remove) // Equals: 2
$set = new SetOfLocations([$one, $two, $three]);
$one = new Location(0);
$check = $set->contains($one);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.