diff --git a/src/Support/Caching/CachedDataConfig.php b/src/Support/Caching/CachedDataConfig.php index 9a3b527d7..fbd504e2f 100644 --- a/src/Support/Caching/CachedDataConfig.php +++ b/src/Support/Caching/CachedDataConfig.php @@ -20,7 +20,21 @@ public function __construct() public function getDataClass(string $class): DataClass { - return $this->cache?->getDataClass($class) ?? parent::getDataClass($class); + if (array_key_exists($class, $this->dataClasses)) { + return $this->dataClasses[$class]; + } + + if ($this->cache === null) { + return parent::getDataClass($class); + } + + $dataClass = $this->cache->getDataClass($class); + + if ($dataClass === null) { + return parent::getDataClass($class); + } + + return $this->dataClasses[$class] = $dataClass; } public function setCache(DataStructureCache $cache): self