symfony 如何使用数组作为...类型?[重复]

jxct1oxe  于 2023-03-30  发布在  其他
关注(0)|答案(2)|浏览(118)

此问题在此处已有答案

(9个答案)
2天前关闭。
我想调用一个这样的方法:

public function to(Address|string ...$addresses) {}

我可以用$obj->to("my-address")调用它。但是,当我想给予一个地址列表时,我使用:

$myList = [ "address-1", "address-2" ];
$obj->to($myList);

但我得到这个错误:must be of type Symfony\Component\Mime\Address|string, array given
即使是[]

如何使用数组作为参数?

5anewei6

5anewei61#

你还需要在函数的 call 中添加...。这个语法有两个互补的含义,都在手册的同一页上。

  • 当在函数的 declaration 中使用时,正如你所做的,它意味着“将单独的参数(如果指定了,每个参数必须是正确的类型)收集到一个数组中”
  • 当用于 calling 一个函数时,它的意思是“将这个数组的项作为单独的参数传递”

因此:

$myList = [ "address-1", "address-2" ];
$obj->to(...$myList);

意思相同:

$obj->to("address-1", "address-2");

然后函数声明中的...$addresses将其返回到数组中,检查每个项是否与类型声明Address|string匹配。

3xiyfsfu

3xiyfsfu2#

你使用...来获取每个参数。在将数组传递给to()之前,你应该展开数组:

$myList = [ "address-1", "address-2" ];
$obj->to(...$myList);

相关问题