This SitePoint PHP blog post (read at Planet PHP if the site is unavailable) brings to light a very useful feature available since PHP 5.6 – ellipses in functional arguments, which allows to define a variable number of arguments to a function.
I’ve seen the mentions of ellipses a few times now, but I assumed that it was a PHP 7 feature. Turns out PHP 5.6 users can enjoy it as well:
<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
}
echo sum(1, 2, 3, 4); // prints out 10
This is very useful, but, as SitePoint PHP blog most mentions, it can be made even more useful with type hinting of the arguments. For example:
<?php
class Movie { private $dates = [];
public function setAirDates(\DateTimeImmutable ...$dates) {
$this->dates = $dates;
}
public function getAirDates() {
return $this->dates;
}
}
The limitation is that you can only hint a single type for all the arguments. The workaround this is to use collection classes, which basically work as strictly typed arrays.