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