我知道这个问题很老,实际上这是一个重复的话题,但对于在这里偶然发现的人来说可能仍然很有趣。
自PHP 5.6+ 起,您可以使用...
称为Splat 运算符的省略号。
function func(...$manyArgs) {
foreach ($manyArgs as $each) {
// do something with $each argument
}
}
RFC
或者从PHP 7.1开始存在一个类型提示,称为iterable
function func(iterable $args) {
foreach ($args as $arg) {
// awesome stuff
}
}
RFC
很快,一旦 PHP 8 出来,它就会变得不那么混乱,因为您不再需要在赋值之前声明属性。
使用您的代码,此构造函数样板:
class Rump {
private $var1;
private $var2;
private $var3;
public function __construct($var1, $var2, $var3) {
$this->var1 = $var1;
$this->var2 = $var2;
$this->var3 = $var3;
}
}
很快将缩短为:
class Rump {
public function __construct(
private $var1,
private $var2,
private $var3) {}
}
RFC
因此,它与iterable
. 不允许使用 Splat 运算符。请注意,这仅适用于构造函数。
class Rump {
public function __construct(private iterable $vars) {}
}