Как должен именоваться токен переменной длины `...` `в PHP? - PullRequest
0 голосов
/ 07 июня 2018

Я недавно узнал о PHP-токене ... (см. docs ), который используется для поддержки списков аргументов переменной длины.Как называется этот токен или как он произносится?Если у него нет имени, есть ли у них похожая функциональность на другом языке, у которого есть имя?

1 Ответ

0 голосов
/ 07 июня 2018

TL; DR: имя токена 'T_ELLIPSIS', используемое в объявлении функции, делает эту функцию 'variadic', используемой при вызове функции с массивом, содержащим параметры, она называется 'распаковка аргумента'.


Его зовут T_ELLIPSIS, я выяснил это, используя token_get_all и token_name в psysh-сессии:

>>> token_get_all('<?php function testit(...$a) { echo $args;}')
=> [
 [
   379,
   "<?php ",
   1,
 ],
....
 [
   391,
   "...",
   1,
 ],
....
>>> token_name(391)
=> "T_ELLIPSIS"
>>> 

Редактировать: Я понял вас, возможно, слишком буквально - ядумал, что вы спросили имя токена, но, учитывая пониженное (ые) мнение (я), я подозреваю, что вы имели в виду, как программисты относятся к нему в речи и письме (по-видимому, "сплат", согласно комментариям)

Править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"
>>> 
...