public function parseCollection(BaseCollection &$collection) { $key = $collection->getUniqueKey(); if (isset(self::$collectionCache[$key]) && !empty(self::$collectionCache[$key])) { return self::$collectionCache[$key]; } if ($collection->isEmpty()) { return []; } \Debugbar::startMeasure('applyFilters', 'Применяем фильтры (' . count($collection->getFilters()) . ')'); /** @var BaseCollectionFilter $filter */ foreach ($collection->getFilters() as $filter) { $filter->execute($collection); } \Debugbar::stopMeasure('applyFilters'); $result = []; \Debugbar::startMeasure('parseItems', 'Парсим предметы (' . $collection->size() . ')'); foreach ($collection->toArray() as $itemInfo) { $item = $this->parseItem($itemInfo); $result[] = $item; } \Debugbar::stopMeasure('parseItems'); self::$collectionCache[$key] = $result; return $result; }