2017-01-12 32 views
1

我想在下面的代碼中接收MyInterface數組。如何在PHP類方法中接收特定接口的數組?

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

上述代碼不起作用。

所以請不要告訴我,只是刪除\Path\To\MyInterface並使用變量$attachLinks。我已經意識到這一點,但這是我需要的。

+0

你使用哪個php版本? – donald123

+0

好,我正在尋找那個,你節省了我的時間:) –

回答

0

到目前爲止,這是什麼都可以使用PHP7完成。直到日期傳遞具有特定類型的數組是不可能的。

public function saveMultiple(
    array $attachLinks 
); 

這將現在至少確保該方法只得到數組作爲參數。

+0

在這裏投票的人必須評論以及解釋原因。你如何更好地判斷我所問過的事情? –

1

在php中沒有泛型類型,所以你不能指定類型「數組」。

但是你可能會做一些伎倆。檢查數組中元素的類型。

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

如果您將其封裝在斷言中,您將能夠禁用此檢查。

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

這不會達到強制傳遞數組類型接口的目的。 –

+0

是的。這不完全是你想要的。這是一種解決方法,可以確保代碼不會在數組中使用不正確的項目執行。 –

-1

也許你可以使用像二傳手的某種類型:

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

,比你的函數使用$這個 - > attachLinks

public function saveMultiple() { 
    print_r($this->attachLinks); 
} 
相關問題