将 PHP splat 参数传递给另一个函数



如果我有一个接受 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()时,它可以用...解压缩。

最新更新