- array_reduce: documentation ( source)
<?php
interface Summable {
public function getNumericValue(): int;
}
class One implements Summable {
public function getNumericValue(): int {
return 1;
}
}
class Two implements Summable {
public function getNumericValue(): int {
return 2;
}
}
function sumNumbers(Summable ...$numbers): int {
return array_reduce($numbers, fn($sum, Summable $number) => $sum += $number->getNumericValue());
}
$numbers = [new One, new Two, new Two];
echo sumNumbers(...$numbers);