簡體   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