- var_dump: documentation ( source)
<?php
readonly class ValidAge {
private const MINIMUM_AGE = 10;
private function __construct(public int $age) {}
public static function createFromInt(int $age): self|NotValidAge {
if (self::MINIMUM_AGE >= $age) {
return new NotValidAge($age, 'Too old');
}
return new self($age);
}
}
readonly class NotValidAge {
public function __construct(
public int $age,
public string $error
) {}
}
class ValidateAge {
public function __invoke(int $age): ValidAge|NotValidAge {
return ValidAge::createFromInt($age);
}
}
class User {
public function __construct(
public int $id,
public ValidAge $age
) {}
}
$rawAge = 33;
$age = (new ValidateAge)($rawAge);
$user = new User(1, $age);
var_dump($user);
$wrongAge = 8;
$notValidAge = (new ValidateAge)($wrongAge);
$anotherUser = new User(1, $notValidAge);
var_dump($anotherUser);