繁体   English   中英

如何在PHP类方法中接收特定接口的数组?

[英]How to receive specific interface's array in PHP class method?

我想接收下面代码中的MyInterface数组。

public function saveMultiple(
    \Path\To\MyInterface $attachLinks[]
);

上面的代码不起作用。

所以请不要告诉我只需删除\\Path\\To\\MyInterface并使用变量$attachLinks 我已经意识到这一点,但这是我需要的。

php中没有泛型类型,所以你不能指定类型«数组的东西»。

但你可能会做一个技巧。 检查数组中的元素类型。

array_walk($attachLinks, function (\Path\To\MyInterface $item) {});

如果将其包装在断言中,则可以禁用此检查。

assert('array_walk($attachLinks, function (\Path\To\MyInterface $item) {})');

到目前为止,这是使用PHP7可以完成的PHP7 直到日期传递具有特定类型的数组是不可能的。

public function saveMultiple(
    array $attachLinks
);

现在至少要确保该方法只将数组作为参数。

也许你可以使用某种类型的setter:

private $attachLinks = [];
public function setter(MyInterface $var)
{
    $this->attachLinks[] = $var;
}

而不是在你的函数中使用$ this-> attachLinks

public function saveMultiple() {
    print_r($this->attachLinks);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM