<?php
class Age {
public function __construct(readonly public int $age) {
if (0 > $age) {
throw new DomainException('Age must be positive integer. "' . $age . '" provided.');
}
}
}
class PickMinAge {
public function __invoke(Age $firstAge, Age $secondAge): Age {
return min($firstAge, $secondAge);
}
}
$firstAge = new Age(33);
$secondAge = new Age(22);
$minAge = (new PickMinAge())($firstAge, $secondAge);
var_dump($minAge);
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
object(Age)#2 (1) {
["age"]=>
int(22)
}
Output for 8.2.18
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.2.18/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.2.18/modules/sodium.so.so (/usr/lib/php/8.2.18/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
object(Age)#2 (1) {
["age"]=>
int(22)
}
Output for 8.1.28
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.1.28/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.1.28/modules/sodium.so.so (/usr/lib/php/8.1.28/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
object(Age)#2 (1) {
["age"]=>
int(22)
}