- filter_var: documentation ( source)
- compact: documentation ( source)
- json_encode: documentation ( source)
<?php
class ValueObject implements JsonSerializable {
private $value;
public function get() {
return $value;
}
public function jsonSerialize() {
return $this->value;
}
}
class Email extends ValueObject {
public function __construct(string $value) {
$email = filter_var($value, FILTER_VALIDATE_EMAIL);
if (false === $email) {
throw new Exception('Email is invalid.');
}
$this->value = $email;
}
}
class Age extends ValueObject {
public function __construct(int $value) {
if ($value > 150) {
throw new Exception('Age must be less than 150.');
}
$this->value = $value;
}
}
$email = new Email('opexus@gmail.com');
$age = new Age(23);
echo json_encode(compact('email', 'age'));