Если вы посмотрите код классов Cart и Quote, все станет ясно.
Вот код для $ cart-> getItems ():
public function getItems()
{
return $this->getQuote()->getAllVisibleItems();
}
Просто и понятно - он просто вызывает метод объекта Quote. Таким образом, теперь возникает вопрос: В чем разница между getAllVisibleItems () и getAllItems () ?
Давайте посмотрим на код обоих методов:
public function getAllItems()
{
$items = array();
foreach ($this->getItemsCollection() as $item) {
if (!$item->isDeleted()) {
$items[] = $item;
}
}
return $items;
}
public function getAllVisibleItems()
{
$items = array();
foreach ($this->getItemsCollection() as $item) {
if (!$item->isDeleted() && !$item->getParentItemId()) {
$items[] = $item;
}
}
return $items;
}
Единственное отличие: getAllVisibleItems () имеет дополнительную проверку для каждого элемента:
!$item->getParentItemId()
который проверяет, есть ли у продукта родитель (другими словами, он проверяет, является ли он простым продуктом). Таким образом, в массиве возврата этого метода будут отсутствовать простые продукты, в отличие от getAllItems () .
Есть ли другие способы получения предметов?
Можно было бы напрямую получить коллекцию товаров из объекта цитаты:
$productCollection = $cart->getQuote()->getItemsCollection();