entityManager = $entityManager; $this->phpArrayFile = $phpArrayFile; parent::__construct($phpArrayFile); } /** * It must not be optional because it should be called before ProxyCacheWarmer which is not optional. */ public function isOptional(): bool { return false; } /** @param string $cacheDir */ protected function doWarmUp($cacheDir, ArrayAdapter $arrayAdapter): bool { // cache already warmed up, no needs to do it again if (is_file($this->phpArrayFile)) { return false; } $metadataFactory = $this->entityManager->getMetadataFactory(); if ($metadataFactory instanceof AbstractClassMetadataFactory && $metadataFactory->getLoadedMetadata()) { throw new LogicException('DoctrineMetadataCacheWarmer must load metadata first, check priority of your warmers.'); } $metadataFactory->setCache($arrayAdapter); $metadataFactory->getAllMetadata(); return true; } }