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

时间:2017-01-12 11:56:00

标签: php arrays namespaces

我想接收MyInterface数组,如下面的代码所示。

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

上述代码无效。

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

3 个答案:

答案 0 :(得分:1)

php中没有泛型类型,所以你不能指定类型«array of something»。

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

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

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

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

答案 1 :(得分:0)

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

public function saveMultiple(
    array $attachLinks
);

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

答案 2 :(得分:-1)

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

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

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

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