我最近了解了PHP的... token(引用docs),它用于支持可变长度的参数列表。这个标记的术语是什么或者它是如何发音的?如果它没有名称,那么它们是否具有另一种具有名称的语言的任何类似功能?
答案 0 :(得分:2)
TL; DR:令牌名称为'T_ELLIPSIS',在函数声明中使用此函数'variadic',在使用包含参数的数组调用函数时使用,它被称为'参数解包'。
它的名字是T_ELLIPSIS
,我发现在psysh-session中使用token_get_all
和token_name
:
>>> token_get_all('<?php function testit(...$a) { echo $args;}')
=> [
[
379,
"<?php ",
1,
],
....
[
391,
"...",
1,
],
....
>>> token_name(391)
=> "T_ELLIPSIS"
>>>
编辑:我理解你可能太字面了 - 我以为你要求提供令牌名称,但是考虑到downvote(s),我怀疑你的意思,程序员如何在语音和写作中引用它(显然是“splat”) “,根据评论意见)
编辑2:在最后一个参数之前的函数定义中使用,在其他语言中,在PHP中使用省略号定义的函数将被称为“可变参数函数”:
>>> function f(...$a) { return $a; }
>>> f(1, 2, 3, 4)
=> [
1,
2,
3,
4,
]
>>>
编辑3:最后:如果你有一个数组保存你要传递给函数的值,你可以使用...
来实现“参数解包”
>>> function f($a, $b, $c) { return "{$a}-{$b}-{$c}"; }
>>> f(...[1,2,3]);
=> "1-2-3"
>>>