如果我有一个接受 splat 参数的 PHP 函数:
function1(...$parms1) {...}
我从另一个也接受 splat 参数的函数调用这个函数:
function2(...$parms2) {function1($parms2);}
函数1 的调用似乎将函数 2 parms 包装到另一个数组中(即函数 1 看到数组中的数组(。
是否可以在不隐式创建第二个参数数组的情况下将 parms 按原样从function2
传递到function1
?
不要误会我的意思,我可以看到 PHP 正在做我要求它做的事情,但是如果我能将function2
的 splat 直接传递给function1
会更方便。
任何建议将不胜感激。
这种方式非常简单:
function2(...$parms2) {
// stuff happens...
// then call function1
function1(...$parms2);
}
Splat 也适用于调用。
查看 PHP 文档中的函数参数。在示例 #14 中,您可以看到...
用于像当前一样接受参数。在示例 #15 中,您可以看到它用于提供参数,如我在此处所示。
$parms2
不是特定于可变长度参数的特殊可迭代对象,它只是一个普通数组。这就是为什么你在function1()
中看到"数组中的数组",但这也意味着当你使用它调用function1()
时,它可以用...
解压缩。