dimensionFactory = $dimensionFactory; $this->collectionFactory = $collectionFactory; } /** * @return Dimension[]|\Traversable */ public function getIterator(): \Traversable { foreach ($this->getWebsites() as $website) { yield $this->dimensionFactory->create(self::DIMENSION_NAME, (string)$website); } } /** * @return array */ private function getWebsites(): array { if ($this->websitesDataIterator === null) { $websites = $this->collectionFactory->create() ->addFieldToFilter('code', ['neq' => Store::ADMIN_CODE]) ->getAllIds(); $this->websitesDataIterator = is_array($websites) ? $websites : []; } return $this->websitesDataIterator; } }