Разница между возвратом каждого объекта или одного arrayCollection - PullRequest
0 голосов
/ 07 мая 2018
public function getInvoiceItemsByType($type)
{
    return $this->invoiceItems->filter(function ($invoice) use ($type) {
        /** @var InvoiceItem $invoice */
        return $invoice->getType() == $type;
    }
    );
}

public function getInvoiceItemsByType($type) {
    foreach ($this->invoiceItems as $invoice) {
        if ($invoice->getType() == $type) {
            return $invoice;
        }
    }
    return null;
}

есть ли разница между этими двумя функциями? Кто-то сказал мне, что есть один, но я не могу найти, что именно, и как одна функция вместо другой повлияет на мой код

1 Ответ

0 голосов
/ 07 мая 2018

Разница в том, что

return $this->invoiceItems->filter(function ($invoice) use ($type) {
    /** @var InvoiceItem $invoice */
    return $invoice->getType() == $type;
});

Возвращает все элементов, которые соответствуют, или пустую коллекцию ArrayCollection, когда ничего не найдено.


В то время как

foreach ($this->invoiceItems as $invoice) {
    if ($invoice->getType() == $type) {
        return $invoice;
    }
}
return null;

будет только когда-либо возвращать первый элемент массива, который соответствует $invoice->getType() == $type или нулю, если он вообще не существует.

...