假设我正在为类的构造函数中的接口键入一系列值:
<?php
use Interfaces\Item;
class MyClass
{
public function __construct(Item ...$items)
{
// Do stuff
}
}
我可以很容易地手动传递这些项目:
$myclass = new MyClass($item1, $item2);
但是我正在努力使其更动态地工作-以下内容不起作用,因为它期望接收Item
而不是数组的多个实例,因此引发了TypeError
:
$items = [
$item1,
$item2
];
$myclass = new MyClass($items);
我想不出一种在构建新类时动态构建要传递的项目而不更改它以期望数组的方法,我宁愿不这样做,因为typehinting显然会捕获应该通过该传递的任何对象。不是。谁能看到我将如何实现这一目标?
splat运算符(...
)有两种工作方式-您可以在函数定义中使用它,但也可以使用它将一系列项目分解为函数参数。
尝试:
$myclass = new MyClass(...$items);
有关完整示例,请参见https://eval.in/927133
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句