PHP的可变长度参数`...`令牌应该被称为什么?

时间:2018-06-07 14:57:34

标签: php arguments token terminology

我最近了解了PHP的... token(引用docs),它用于支持可变长度的参数列表。这个标记的术语是什么或者它是如何发音的?如果它没有名称,那么它们是否具有另一种具有名称的语言的任何类似功能?

1 个答案:

答案 0 :(得分:2)

TL; DR:令牌名称为'T_ELLIPSIS',在函数声明中使用此函数'variadic',在使用包含参数的数组调用函数时使用,它被称为'参数解包'。

它的名字是T_ELLIPSIS,我发现在psysh-session中使用token_get_alltoken_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"
>>>