我想在下面的代碼中接收MyInterface數組。如何在PHP類方法中接收特定接口的數組?
public function saveMultiple(
\Path\To\MyInterface $attachLinks[]
);
上述代碼不起作用。
所以請不要告訴我,只是刪除\Path\To\MyInterface
並使用變量$attachLinks
。我已經意識到這一點,但這是我需要的。
我想在下面的代碼中接收MyInterface數組。如何在PHP類方法中接收特定接口的數組?
public function saveMultiple(
\Path\To\MyInterface $attachLinks[]
);
上述代碼不起作用。
所以請不要告訴我,只是刪除\Path\To\MyInterface
並使用變量$attachLinks
。我已經意識到這一點,但這是我需要的。
到目前爲止,這是什麼都可以使用PHP7
完成。直到日期傳遞具有特定類型的數組是不可能的。
public function saveMultiple(
array $attachLinks
);
這將現在至少確保該方法只得到數組作爲參數。
在這裏投票的人必須評論以及解釋原因。你如何更好地判斷我所問過的事情? –
在php中沒有泛型類型,所以你不能指定類型「數組」。
但是你可能會做一些伎倆。檢查數組中元素的類型。
array_walk($attachLinks, function (\Path\To\MyInterface $item) {});
如果您將其封裝在斷言中,您將能夠禁用此檢查。
assert('array_walk($attachLinks, function (\Path\To\MyInterface $item) {})');
這不會達到強制傳遞數組類型接口的目的。 –
是的。這不完全是你想要的。這是一種解決方法,可以確保代碼不會在數組中使用不正確的項目執行。 –
也許你可以使用像二傳手的某種類型:
private $attachLinks = [];
public function setter(MyInterface $var)
{
$this->attachLinks[] = $var;
}
,比你的函數使用$這個 - > attachLinks
public function saveMultiple() {
print_r($this->attachLinks);
}
你使用哪個php版本? – donald123
好,我正在尋找那個,你節省了我的時間:) –